WPF

WPFでElm Architecture --- Xaml利用しない版 --- 可変個のコントロール --- データによりコントロールの種類変更

下記記事にて可変個のコントロールを表示できるよう実装しました。 WPFでElm Architecture --- Xaml利用しない版 --- 可変個のコントロール - 何でもプログラミングただし、すべてのコントロールが同じで個数のみが可変であったため、今回は入力データによっ…

Throttle(一定時間リクエストがなければ実行をする)の実装

スライダーなどから大量のリクエストが送られてきたときに、全て処理する必要がない場合、一定時間リクエストがなければ最新の値で処理を行うことがあります。ReactiveExtensionにもThrottleオペレータは用意されていますので、普段はこれを利用するので問題…

WPFでElm Architecture --- Xaml利用しない版 --- 可変個のコントロール

下記記事にてXamlを利用しないElm Architectureを実装しました。 WPFでElm Architecture --- Xaml利用しない版 - 何でもプログラミングただし、固定個のコントロールにしか対応していませんでした。今回はGridなどのChildrenを動的に変更できるよう実装して…

WPFでElm Architecture --- Xaml利用しない版

下記記事にて、ViewModelまでをElm Architectureで実装し、Xamlとバインディングしてアプリケーションを作成する方法を紹介しました。 Elm Architectureを利用したMVVM --- C# WPF - 何でもプログラミング今回はXaml部分をC#側で実装したものを作成してみた…

既存のDependencyPropertyの変更を検知する

自前でDependencyPropertyを実装する場合は、Register時にPropertyMetadataを渡すことで、値の変更時にコールバックを呼び出すことが可能となります。しかし既存のDependencyPropertyの場合はすでにRegisterされているため、変更を検知するには別のアプロー…

Functional Reactive Programming + MVVMでのUserControl --- C# WPF

下記記事にてFRPライブラリのSodiumとWPFを連携させてみました。 Functional Reactive Programming + MVVM --- C# WPF - 何でもプログラミング今回はUserControlでも利用できるよう実装してみたいと思います。 アプリケーションコード いつも通り、カウンタ…

Functional Reactive Programming + MVVM --- C# WPF

下記記事にて、Functional Reactive ProgrammingライブラリであるSodiumとWPFを連携させました(F#) SodiumでFunctional Reactive Programming (F#) --- WPF連携 - 何でもプログラミング今回は、C#にてSodiumとWPFを連携させてみたいと思います。 アプリケ…

Elm Architectureを利用したMVVMでのUserControl --- C# WPF

下記記事にて、C#でElm Architectureを利用してWPFアプリケーションを作成しました。 Elm Architectureを利用したMVVM --- C# WPF - 何でもプログラミング今回はElm ArchitectureでUserControlを実装してみたいと思います。F#版での実装は下記記事を参照して…

Elm Architectureを利用したMVVM --- C# WPF

下記記事にてF#でElm ArchitectureをWPFに導入してみました。 F#でWPF --- Elm Architectureを利用したMVVM - 何でもプログラミング今回はC#で近いものを実装してみたいと思います。F#の方ではサポートしたModel→ViewModelの変換は省略していますので、必要…

WPF --- Bindingで配列をObservableCollectionに変換

現状、ItemsControlのItemsSourceに通常の配列をバインドした際、配列を新しくする度にコントロールが全て再作成されます。通常の配列の代わりにObservableCollectionをバインドすることにより、変更箇所のみViewが更新されるようになります。(要素の追加で…

F#でWPF --- Elm Architectureで実装されたUserControl

あるアプリケーションを作成した後に、それをコントロール化して更に大きなアプリケーションを作成したい時があります。今回は、下記記事で作成したカウンタアプリケーションをコントロール化してみたいと思います。 F#でWPF --- Elm Architectureを利用した…

DependencyProperty定義の記述量削減(F#)

下記記事にてC#でDependencyPropertyの記述量を削減してみました。 DependencyProperty定義の記述量削減 - 何でもプログラミング今回はF#でDependencyPropertyの記述量を削減してみたいと思います。内容はほぼAttachedPropertyの時と同じですので、下記記事…

F#でWPF --- ItemsControlのItemのCommand

作成するアプリケーション 複数の、クリック回数を表示するボタンからなるアプリケーションを作成します。追加ボタンにより、クリックできるボタンを動的に増やすことができます。 本記事ではElm Architectureを利用しますので、下記記事を参照してください…

Visual Studio 2017でプロジェクトテンプレート作成

F#でWPFプログラミングをする際、プロジェクトテンプレートにコンソールアプリケーションしか存在しないため、毎回参照設定などを追加する必要があります。今回はWPF用のプロジェクトテンプレートを作成してみたいと思います。 テンプレートの準備 まずは普…

AttachedProperty定義の記述量削減(F#)

下記記事にて、C#でAttachedPropertyの記述を削減してみました。 AttachedProperty定義の記述量削減 - 何でもプログラミング今回はF#でAttachedPropertyの記述を減らしてみたいと思います。C#版同様、プリプロセスやポストプロセスは利用しないで実装してみ…

AttachedProperty定義の記述量削減

下記記事にて、依存プロパティの定義の記述量を削減しました。 DependencyProperty定義の記述量削減 - 何でもプログラミング今回は同様に、添付プロパティの記述量を削減してみたいと思います。素のままでは下記のような記述になり、エディタ上で"propa"とタ…

DependencyProperty定義の記述量削減

独自のDependencyPropertyを定義する際、コールバックも含めると下記のような記述になります。 public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(int), typeof(Counter), new PropertyMetadata(0, (…

WPFでマウスドラッグイベント

WPFにはデフォルトでドラッグのイベントは用意されていません。今回はドラッグ用のイベントを実装してみたいと思います。記事内で利用しているObservableクラス、Disposeクラス、Subscribe関数は下記記事を参照してください。 C# eventをIObservableに変換 -…

WPFとDirect3D11の連携 --- テクスチャ貼り付け

下記記事にて三角形を描画するところまで記述しました。 WPFとDirect3D11の連携 --- 三角形描画 - 何でもプログラミング今回はテクスチャを貼り付けて表示してみたいと思います。 Texture作成 Direct3D9側でD3DFMT_A8R8G8B8にてレンダリングターゲットを作成…

WPFとDirect3D11の連携 --- 三角形描画

下記記事にてWPFとDirect3D11を連携してサーフェスを表示しました。 WPFとDirect3D11の連携 --- 導入 - 何でもプログラミング今回は単純な三角形を描画してWPFで表示してみたいと思います。 Shader作成(csoから) csoデータが存在する場合は、下記関数のみ…

WPFとDirect3D11の連携 --- 導入

下記記事にてWPFとDirect3D9Exを連携する方法を記述しました。 WPFとDirect3D9Exの連携 --- 導入 - 何でもプログラミング最近ではDirect3D11の利用がメジャーになっていますので、今回はWPFとDirect3D11を連携させてみたいと思います。WPF自体はDirect3D9で…

WPFとDirect3D9Exの連携 --- テクスチャ貼り付け

下記記事にて三角形を描画するところまで実装しました。 WPFとDirect3D9Exの連携 --- 三角形描画 - 何でもプログラミング今回はさらにテクスチャを貼り付けを実装してみたいと思います。本記事で利用している、CreateVertexShader、CreatePixelShader、Creat…

WPFとDirect3D9Exの連携 --- 三角形描画

下記記事にてIDirect3DSurface9をWPFで表示しました。 WPFとDirect3D9Exの連携 --- 導入 - 何でもプログラミング今回は単純な三角形を描画してWPFで表示してみたいと思います。本記事で利用しているAssertHR、CliComPtr、CreateDevice、CreateRenderTargetに…

WPFとDirect3D9Exの連携 --- 導入

WPFにDirect3Dのレンダリング結果を貼り付けたい場合、D3DImageクラスが利用できます。CPU経由でBitmapSourceを作成するのに比べ、D3DImageはGPU内で完結するため、より効率的です。今回はD3DImageを利用するところまでを実装したいと思います。 C++/CLI用Co…

F#でWPF --- CatmullRom曲線の描画

図形を描画する際に、指定した点を通る滑らかな曲線を描きたいことがあります。今回はCatmullRom曲線でこれを実現したいと思います。 CatmullRom曲線 2点間の補間は、更にその前後の点を利用して求められます。2点(p1、p2)と、その前後の点(p0、p3)の…

F#でWPF --- BitmapImageで画像ロード

下記記事にてOpenCVと連携して画像を表示しました。画像を読み込むだけであればWPFの標準セットで可能であるため、今回はWPFで画像をロードして表示してみます。ついでにグレースケール化も行ってみます。 作成するアプリケーション ファイルダイアログで画…

F#でWPF --- OpenCV連携

下記記事にてOpenCVを.netから利用できるようC++/CLIでラップする方法を紹介しました。 OpenCVをC++/CLIでラップ - 何でもプログラミング今回はWPFと連携させて画像を表示してみたいと思います。 作成するアプリケーション ファイルダイアログで画像を選び、…

F#でWPF --- Resource、Content、EmbeddedResource

F#でWPFプログラミングをする際に、XamlファイルのBuild Actionをいくつか選ぶことができます。今回はResource、Content、EmbeddedResource各々でのXamlの読み込み方を記述していきます。 Resource WPFにのみ提供されるBuild Actionです。対象のリソースを実…

F# --- TypeProvider --- DependencyProperty自動実装

下記記事にてTypeProviderを作成する方法を記述しました。 F# --- TypeProvider --- クイックスタート - 何でもプログラミング今回は応用としてDependencyPropertyを自動実装するTypeProviderを作成してみます。結果としてあまり実用的ではないものであるた…

F#でWPF --- 可変個のコントロール --- 独自の条件で生成するコントロールを変更

下記記事にて、型でコントロールを分岐する実装をしました。 F#でWPF --- 可変個のコントロール --- 型で生成するコントロールを変更 - 何でもプログラミング今回はユーザーが独自に定義した条件で分岐するよう実装します。 作成するアプリケーション F#の判…

F#でWPF --- 好きな図形のコントロール作成 --- Geometry利用

下記記事にて好きな図形のコントロールを作成しました。 F#でWPF --- 好きな図形のコントロール作成 - 何でもプログラミングその際、独自のヒットテストを実装しようとすると、ロジックを一から実装しなければなりませんでした。今回はGeometryクラスを用い…

F#でWPF --- 好きな図形のコントロール作成

下記記事ではXAML上でPathを使って好きな図形を描きました。 XAMLで好きな形を描く - 何でもプログラミング今回はコード側でコントロールを作成してみます。 作成する図形 Pathの時と同様の図形のコントロールを作成します。 DrawingVisual Frameworkを継承…

XAMLで好きな形を描く

WPF

WPFのShapeの一つにPathというものがあります。名前だけだとPolylineのような感じがしますが、色々なものが描画できます。 パスマークアップ HtmlのSVGでも採用されている図形描画用の構文です。例えば以下の図形を描くには下記のようなコードになります。 <Path Data="M15,15 L85,85 M85,15 L15,85 M50,0 A50,50 0 0 0 50,100 A50,50 0 0 0 50,0" Stroke="Red" StrokeThickness="5" /> </path>…

F#でWPF --- 階層構造表示

今回はTreeViewを利用して階層構造のデータを表示してみます。 HierarchicalDataTemplate 基本的にはDataTemplateにItemsSourceが加わったのものです。ItemsSourceに子供の要素を保持しているプロパティをバインドします。DataTemplateに関しては下記記事を…

F#でWPF --- リストボックスCommand --- 複数選択

下記記事にてリストボックスで利用できるBehaviorを作成しました。 F#でWPF --- リストボックスCommand - 何でもプログラミング今回はこれを拡張して、複数選択に対応させた実装をします。 ListBoxBehavior 単選択の時とほとんど同じです。SelectedItemを利…

F#でWPF --- リストボックスCommand

今回はListBoxに、選択されたindexを送るCommandを実装します。実装はBehaviorを利用して行います。Behaviorの詳しい内容は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミング SelectionChanged Li…

F#でWPF --- フォルダダイアログCommand

下記記事にてOpenFileDialogに対応したActionを作成しました。 F#でWPF --- ファイルダイアログCommand - 何でもプログラミング今回はフォルダを選択するダイアログに対応したActionを作成します。 作成するアプリケーション ボタンを押してフォルダダイアロ…

F#でWPF --- XAMLデザイナでサンプルデータ利用

VisualStudioに備え付けのXAMLエディタでデザインをする際、実行時に決定される可変個のコントロールを扱うのは大変です。そこで今回は、デザイン時にサンプルのViewModelを利用する方法を書いていきます。 DesignInstance 下記のようにXAMLを記述することに…

F#でWPF --- UI画像キャプチャ --- キャプチャ時VM変更

下記記事にてUI画像をキャプチャする方法を記述しました。 F#でWPF --- UI画像キャプチャ - 何でもプログラミング今回は、キャプチャ時のみに表示を変更したい場合に対応します。 実現方法 キャプチャ実行時にViewModelが公開しているキャプチャ用のViewMode…

F#でWPF --- UI画像キャプチャ

今回は、表示されているWPFコントロールを画像として保存する方法を書いていきます。F#でWPFを利用する方法は下記記事を参照してください。 F#でWPF --- ウィンドウ表示 - 何でもプログラミング 作成するアプリケーション キャプチャボタンを押すと、Gridの…

F#でWPF --- メッセージボックス --- System.Windows.MessageBox不使用

下記記事において、MVVMにおけるメッセージボックス表示の実装を行いました。 F#でWPF --- ファイルダイアログCommand - 何でもプログラミング上記記事での実装は、stringの値にバインドしているというよりは、stringの変化のトリガーに引っかけて動作してい…

F#でWPF --- 可変個のコントロール --- 型で生成するコントロールを変更

下記記事では同じ型のリストを元にコントロールを作成しました。 F#でWPF --- 可変個のコントロール - 何でもプログラミング今回は異なる型のリスト(ベースクラスのリストで、各インスタンスの型はバラバラ)を元にコントロールを作成してみます。 作成する…

F#でWPF --- 可変個のコントロール

F#でWPFプロジェクトを作成する方法は下記記事を参照してください。 F#でWPF --- ウィンドウ表示 - 何でもプログラミング 作成するアプリケーション ボタンを押す度、ランダムな位置に円シェイプを追加するアプリケーションを作成します。 コード(F#側) コー…

F#でWPF --- メッセージボックス

作成するアプリケーション ボタンを押すと"Hello"のメッセージボックスが表示されるアプリケーションを作成します。 MVVMを用いない場合 下記の様なシンプルなコードになります。しかしViewが分離できていません。 button.Click |> Event.add (fun _ -> Mess…

F#でWPF --- ファイルダイアログCommand

今回はファイルダイアログを開いて選択されたパスをCommandで送る機能を実装します。この機能を実装するにあたり、Actionを利用します。 Action Behaviorと同じく、System.Windows.Interactivity.dllを利用します。Behaviorの詳細は下記記事を参照してくださ…

F#でWPF --- スライダーCommand

今回はdouble値をCommandで送るSliderを作成します。 SliderにはCommandプロパティが用意されていないため、Behaviorを作成します。Behaviorの基本は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミ…

F#でWPF --- テキストボックスCommand --- 1文字変更毎に発行

下記記事ではキーボードのフォーカスが外れた時にCommandを実行するよう実装しました。 F#でWPF --- テキストボックスCommand - 何でもプログラミング今回は1文字変更する度にCommandを実行するよう実装します。 TextChangedイベント TextBoxにはTextChanged…

F#でWPF --- テキストボックスCommand

今回はstringを送るCommandをTextBoxに追加します。 TextBoxにはCommandプロパティが用意されていないため、Behaviorを作成します。Behaviorの基本は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミ…

F#でWPF --- チェックボックスCommand --- Behavior利用

下記記事ではCommandParameterを利用してboolを渡すCommandを実装しました。 F#でWPF --- チェックボックスCommand - 何でもプログラミング今回はBehaviorという機能を利用して同じCommandを実現します。 参照追加 Behaviorを利用するには、System.Windows.I…

F#でWPF --- チェックボックスCommand

今回はチェックボックスのCommandを利用したアプリケーションを作成します。 作成するアプリケーション チェックを入れるとダイアログの背景がグレーに、外すと白になるアプリケーションを作成します。 CommandParameter チェックの状態をCommandと共に送る…