タグ

開発に関するrakka74のブックマーク (88)

  • AnyCPUなC#モジュールからx86/x64のDLLを呼び分ける方法まとめ - 株式会社CFlatの明後日スタイルのブログ

    こんにちは、株式会社CFlatです。 C#には、実行環境が32ビットか64ビットかを問わず、適切なモードで実行できる、AnyCPUという仕組みが存在します。 ところがこの機能、裏を返せば実行時まで32ビットか64ビットかわからないという事でもあるわけですので、AnyCPUをサポートしていない言語……例えばCやC++/CLIで作ったDLLを使いたい場合、DllImportとの相性がすこぶる悪いことになります。というのもDllImportはコンパイル時にDLLの読み込みパスを指定するため、実行時に「32bitだったらこのDLL、64bitだったらこのDLL」とはできないのです。 このような場合、どのような解決策を使うにせよ、何らかの制約を強いられることになります。 そんなわけで、幾つかある解決策の長所短所をまとめてみました。 (1) 全部32bitで固定する C#側を32bitに固定することで

    AnyCPUなC#モジュールからx86/x64のDLLを呼び分ける方法まとめ - 株式会社CFlatの明後日スタイルのブログ
  • Direct2D and Direct3D interoperability overview - Win32 apps

  • WPF + Direct2D のサンプル(サーフェイスの共有) - 川西 裕幸のブログ - Site Home - MSDN Blogs

    WPF も Direct2D もハードウェア アクセラレーションが重要な機能の一つです。しかし、WPF が使うのは Direct9(Ex) サーフェイスで、Direct2D が使うのは DXGI 1.1 サーフェイスです。例えば Direct2D の描画を WPF で表示しようとするとき、ハードウェア サーフェイスが共有できないため、一旦システムメモリーに読み戻さなければならず、パフォーマンスが低下します。Direct2D をソフトウェア レンダリングで使ったほうが良い性能が得られるかもしれません。 この問題を解決するにはサーフェイスを共有できるようにしなければなりません。サーフェイスを共有する方法については、Surface Sharing Between Windows Graphics APIs で詳しく解説されています。また、以下のようなサンプルコードが公開されています。 DXGI

    WPF + Direct2D のサンプル(サーフェイスの共有) - 川西 裕幸のブログ - Site Home - MSDN Blogs
    rakka74
    rakka74 2016/12/02
    「Direct2D の描画を WPF で表示するサンプルを Rob Relyea が彼のブログで公開しました。」not found
  • D3DImageでDirect2D - イグトランスの頭の中

    D3DImageとDirect2Dデバイスコンテキストを組み合わせるコードが全然見当たらなかったので、試しに書いてみました。 WPFのD3DImageは、そのままではDirect2Dでの描画を表示できるようにはできていません。 D3DImageはDirect3D 9サーフェースしか受け付けない。 Direct2DはDXGIサーフェース(つまりDirect3D 10以上)を使う。 対策として、Direct3D 9Exから追加された共有ハンドル (shared handle)を使います。これを使えば、Direct3D/DXGIのバージョンの壁を越えて、共有のリソースが作れます。今回はサーフェースを共有します。 ATL::CComPtr<IDirect3DDevice9Ex> d3d9Device; // IDirect3D9Ex::CreateDeviceExでDirect3D 9Exデバイス

    D3DImageでDirect2D - イグトランスの頭の中
  • なにはともあれHelloWorld

    仕組み SlimDXというかDirectXはWPF向きに作られていないので、その間をどうにかしてつなぐ必要があります。 ここでは、 バッファー用ウインドウに表示 D3DImageに渡して、それをソースとするWPF用Imageを描画 という形式にしました。 いちいち画像に変換してる辺り無駄な気がしなくも無いですが、長所としては画像扱いなので非常に扱いやすい(ファイルに保存なんかも容易)ってところでしょうか。 方法 WPFアプリケーションを作る 普通に作るのはできるものとして割愛します! D3DImageの追加 MainWindow.xamlの13-17行目です。 System.Windows.Interop.D3DImageを、System.Windows.Controls.Imageのソースとして追加しておきます。 そうするとここに描画された画面が出てきます。 ロジック 今回やることの

    なにはともあれHelloWorld
  • WPF で Direct3D9 コンテンツをホストする

    このチュートリアルでは、Windows Presentation Foundation (WPF) アプリケーションで Direct3D9 コンテンツをホストする方法について説明します。 このチュートリアルでは次のタスクを実行します。 Direct3D9 コンテンツをホストする WPF プロジェクトを作成します。 Direct3D9 コンテンツをインポートします。 D3DImage クラスを使用して Direct3D9 コンテンツを表示します。 完了すると、WPF アプリケーションで Direct3D9 コンテンツをホストする方法がわかります。 必須コンポーネント このチュートリアルを実行するには、次のコンポーネントが必要です。 Visual Studio DirectX SDK 9 以降。 WPF 互換形式の Direct3D9 コンテンツを含む DLL。 詳細については、「WPF と

    WPF で Direct3D9 コンテンツをホストする
  • D3DImage チュートリアル ⓪ はじめに

    D3DImageは.NET Framework 3.5 SP1からサポートされた機能で、Direct3D のレンダーターゲット(Direct3DSurface9)をWPFのImageSourceとして扱うことができます。 D3DImageを使ったサンプルとして、CodeProjectのIntroduction to D3DImageと、MSDNのチュートリアル「WPFでのDirect3Dコンテンツのホスト」および「WPFでホストするためのDirect3D9コンテンツの作成」があります。これらのサンプルでは、P/Invoke(DLLImport属性)を使ってアンマネージ アセンブリを利用しています。 チュートリアルでは、C++/CLIを使ってネイティブコードのラッパーを作成し、コンパイラスイッチ(/clr)でネイティブ アセンブリを混合アセンブリにコンバートします。この手法を使うと、アンマ

    D3DImage チュートリアル ⓪ はじめに
    rakka74
    rakka74 2016/12/01
     「D3DImageは.NET Framework 3.5 SP1からサポートされた機能で、Direct3D のレンダーターゲット(Direct3DSurface9)をWPFのImageSourceとして扱うことができます。」
  • Using Direct2D from a service in C#

    rakka74
    rakka74 2016/11/30
    WindowsApiCodePackのDirectXを使うコード
  • SharpDX-Samples/Desktop/DirectWrite at master · sharpdx/SharpDX-Samples

    rakka74
    rakka74 2016/11/30
    SharpDXのDirectWrite関係のサンプル
  • WPFデスクトップアプリでDirect2Dを使う - Qiita

    はじめに WPFのデスクトップアプリでDirect2D描画をしたいと思ったのですが、検索しても情報が古かったりいまいち良い方法が見当たりません。 割と新しめのは Win2D: ユニバーサルアプリ前提なら WPFDXInterop: pre-release(2015/12/27時点)。今後はこれが命? あたりですが、今回はデスクトップアプリで使いたかったのとSharpDXを試してみたい、ということでWPFコントロールを作ってみました。 (とはいえ大半のソースは古いSharpDX/SlimDXのWPF向けサンプルソースから持ってきてるので、今回の作業はDirectX11環境向けの調整とソースの整理、nugetパッケージ化くらいです) この記事を書いているときに気づきましたが、SharpDXはDirectX12対応の3.0.0がリリースされたようです。 時間が出来たら今回作ったコントロールも対

    WPFデスクトップアプリでDirect2Dを使う - Qiita
    rakka74
    rakka74 2016/11/30
    Direct2DControlを使えば簡単にSharpDX使ってDirect2Dで描画できるっぽい
  • WPF で SharpDX を使うには

    :::::::::::056話 WPF で SharpDX::::::::::: SharpDX のサンプルは基的にC#の Windows.Form を使います。 では WPF で SharpDX を使いたい場合はどうすれば良いのでしょうか? WPF で SharpDX を利用するには 実はサンプルをよく見ると WPF での使い方が示されています。 サンプルの使い方は 053話 SharpDX 使い方 で示しました。 プロジェクト名は WPFHost です。 ビルドして実行すると次の結果が得られます。 1秒間隔で固定された三角形の色が変化する様子が確認できます。 WPF についてはもう大丈夫かな? ソースを読んだところ、CompositionTarget.Rendering イベントにハンドラを引っ掛けて メッセージループを完成させています。(約16ms間隔の更新) 実装の詳細を見てみま

  • WPFでWebBrowser内のスクリーンショットを保存する - Qiita

    WPFで特定要素、今回の場合WebBrowserの範囲のスクリーンショットを保存するために以下のようなコードを書きました。 var rtb = new RenderTargetBitmap( (int)browser.Width, (int)browser.Height, 96, 96, PixelFormats.Pbgra32 ); rtb.Render(browser); string dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); using (FileStream fs = File.Open(filePath, FileMode.Create)) { var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Cre

    WPFでWebBrowser内のスクリーンショットを保存する - Qiita
  • guideline_for_procedure_of_open_project/Appendix/CCLicenseライセンス付与のしかた:採用の理由.md at master · yosukesakai/guideline_for_procedure_of_open_project

  • YKSoftware - for WPF Developers

    tips - ドラッグ&ドロップ操作によるリストの並べ替え 2 マウスによるドラッグ&ドロップ操作によってアイテムを並べ替えることができるリストを ビヘイビアで実現する一例を紹介します。 サンプルプロジェクトはここからダウンロードできます。 ページ内リンク 概要 概要 ItemsSource プロパティに設定した場合でも Items プロパティに設定した場合でも対応してみました。 説明は省略という暴挙に出ますが。がが。 しかもいきなり Adorner とか付いててゴーストも表示されますが。 namespace DragAndDropList.Views.Behaviors { using System; using System.Collections; using System.Windows; using System.Windows.Controls; using System.Wi

    YKSoftware - for WPF Developers
    rakka74
    rakka74 2016/11/24
    ListViewItemのドラッグ&ドロップをbehaviorで実装
  • WPFでListBoxアイテムのドラッグ&ドロップを実装する。 #adcjcs - 亀岡的プログラマ日記

    これはC#AdventCalander7日目の記事です。これまでかなりコードよりな話が多かったので多分に浮いている空気がしますが、気にせずに時期を外したWPFTipsを書いてみます。UIたのしいよUI! と、いうわけで。 概要 WPFはListoxを始めとしたItemsControl系が非常に強力です。そして物が順番に並んでいると、人は並び替えたくなるものです。そんな時にUp/Downボタンで上下させるとか、やってられませんよね?? そんな訳で、最近あまり触れてなかったWPFで、ItemsControl要素のドラッグ&ドロップ実装をリハビリ代わりに書いているので、それの概要などをお伝えしようかなと思います。 ItemsControlの構造 ItemsControlは内部的にはItemsPanel → ItemContainer → Item という三重の構造になっています。 イメージとして

    WPFでListBoxアイテムのドラッグ&ドロップを実装する。 #adcjcs - 亀岡的プログラマ日記
    rakka74
    rakka74 2016/11/21
    ドロップ先をわかりやすくするInsertionMark
  • 【C#/WPF】ListBoxのアイテムを半透明ゴーストつきドラッグアンドドロップで並べ替える - tinyjoker.net

    はじめに WPF の ListBox において、ドラッグアンドドロップ(以下、D&D)でアイテムを並べ替える方法を説明する。また、ドラッグ中はマウスカーソル変更だけでなく、半透明のドラッグオブジェクト(以下、ゴースト)を表示する。 ▲ ▼ 概要 さて、WPF はビジュアルのカスタマイズがかなりできるので、たかが ListBox でもけっこう凝ったことができる。そこで欲しくなるのが、D&D でアイテムを並び替えるギミックだ。 実はこれは簡単だ。だが、ひとたびゴーストを表示しようと思うと一筋縄ではいかない。ここでは苦悩の末、ListBox 中のアイテムをゴーストつきで並べ替えるコードを紹介する。 そもそもこの半透明のゴースト(当の呼び名は知らない)の情報が極端に少ない。唯一参考になったのが、下記のオノッチさんのサイトだ。 ドラッグアンドドロップ - 全て是れ、意の如し このページでも基的に

  • ListViewの選択項目を取得/設定する - Qiita

    ※前からWPFやってる人には常識なんだろうなあとは思うけどそういうことは気にしない 問題 ListViewの選択項目をプログラムから操作するには、VMにIsSelectedプロパティを用意して、ListViewItem.IsSelected にバインドすればよい <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="IsSelected" Value="{Binding IsSelected}" /> </Style> </ListView.ItemContainerStyle> という記述がぐぐるとよく見つかるのだけど、これは正しくない。 ListViewはデフォルトで仮想化されるため、見えている範囲+αの分しかListViewItemのインスタンスは生成されない。ListVie

    ListViewの選択項目を取得/設定する - Qiita
    rakka74
    rakka74 2016/11/02
    仮装ビューでどうなるか
  • ニコニコ動画・ニコニコ生放送のコメント取得 備忘録 : まぢぽん製作所

    3月12 ニコニコ動画・ニコニコ生放送のコメント取得 備忘録 カテゴリ:ソフトウェア 以前に、ニコニコ生放送とニコニコ実況のコメント取得方法について記事を書きました。 今回はニコニコ動画のコメント取得とニコニコ生放送の過去ログ取得方法について備忘録的なまとめを書きます。 まず、ニコニコ動画のコメント取得方法です。 他のサイトにも参考になる情報はたくさんありますが、古い情報も多いため、今回改めて整理していきます。 ニコニコ動画のコメントシステムは少しずつ変わっており、まずは現状を把握します。 こちらに詳しくあります。 コメント ー ニコニコ大百科以前は最新コメントを順に取得する方式だったのが、1分あたり100コメントを取得する方式が導入され、現在はそれらをミックスした方式になっているようです。 ニコニコ動画のコメント取得 ニコニコ動画のコメントを取得するにはコメントサーバにアクセスする必要が

    ニコニコ動画・ニコニコ生放送のコメント取得 備忘録 : まぢぽん製作所
  • async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ

    ※個人的な備忘録的なものです。 こっちとかこっちのが良くまとめられています。 ライブラリ制作者向けの内容になっているのでアプリ製作者にはあまり関係がないかもしれません なお、サンプルコードは全てWindowsストアアプリとして実行したものとします デッドロックで泣きを見ないように 下のようなライブラリのコードがあるとします gist11215254 このライブラリのDoAsyncは呼び出され方によってはデッドロックされてしまいます 下のコードがその例になります gist11215568 原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです 図にすると以下のようになります Waitするなと思った方がいらっしゃるかもしれませんが、使用するのは自分ではなく他人のアプリ製作

    async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ
    rakka74
    rakka74 2016/04/05
    Waitでデッドロックについて
  • 非同期プログラミング - 非同期への変換

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 2015 年 7 月 Volume 30 Number 7 非同期プログラミング - 非同期への変換 Stephen Cleary | 2015 年 7 月 Visual Studio Async CTP の発表当時は恵まれた環境で作業していました。2 つの比較的小さなグリーンフィールド アプリケーション (新規開発のアプリケーション) を 1 人で担当していて、async と await のメリットを十分に生かせていました。当時は筆者を含め MSDN フォーラムのさまざまなメンバーが非同期処理に関する複数のベスト プラクティスについて調査、議論、実装を行っていました。最も重要なベスト プラクティスについては

    非同期プログラミング - 非同期への変換