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"とタ…

LINQ独自オペレータ メモ

C#

C#のIEnumerableには、SelectやAggregateなど様々なオペレータが用意されています。本記事では、あったら便利な独自のオペレータを定義してメモしたいと思います。随時更新予定です。 ForEach なんだかんだで、やっぱりあると便利です。 public static void …

T4でImmutableクラスコンストラクタ作成(C#)

T4 C#

C#(7.0)でImmutableクラスを作成する際、下記のような記述が必要になります。 public class Person { public string Name { get; } public int Age { get; } public Person(string name, int age) { Name = name; Age = age; } } F#のレコードと異なり、コ…

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に変換 -…

C# eventをIObservableに変換

C#

eventからIObservableへの変換は、下記のRxのFromEvent関数にて行えます。 NuGet Gallery | Reactive Extensions (Rx) - Main Library 3.1.1今回は、Rxを導入するほどでもないとき用に、シンプルなものを自前で実装してみたいと思います。 Observer、Observa…

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…

SSEで画像処理 --- グレースケール化

下記記事にてSSEで簡単な画像処理をしてみました。 SSEで画像処理 --- 導入 - 何でもプログラミング今回はカラー画像をグレースケール化する処理を実装してみたいと思います。入力はRGBA32bitを仮定しています。(RGB24bitの場合、48Byte毎に処理する必要が…

SSEで画像処理 --- 導入

下記記事にてアラインされたstd::vectorを作成する方法を記述しました。 アラインされたstd::vector - 何でもプログラミング今回はそれを利用して、SSEで簡単な画像処理を行ってみます。 準備 今回はintrinsicを用いて実装するため、#include します。また記…

アラインされたstd::vector

C++

SSEやAVXを利用して処理を高速化する際に、メモリ領域がアラインされている必要があります。アラインされた領域を確保するだけであれば_mm_mallocで可能ですが、_mm_freeを自分で呼ぶ必要があります。今回はstd::vectorでアラインされた領域を確保できるよう…

Bitmap読み書き

C++

下記記事にて、Windows標準ライブラリで画像を読み書きする方法を記述しました。 GDI+ --- 画像ファイル読み書き - 何でもプログラミングBitmapであれば更に何のライブラリも必要なく簡単に読み書きできます。ちょっとした画像関係の動作確認レベルの時に便…

WindowsでOpenGLES --- imgui導入

OpenGL上でGUIを実装するライブラリの一つに、ImGuiがあります。 GitHub - ocornut/imgui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies数ファイル取り込むだけでGUIを実装できるため、簡単なソフトの作成には便…

WindowsでOpenGLES --- 三角形描画

下記記事にてGLFWで、OpenGLESが初期化されたウィンドウを作成しました。 WindowsでOpenGLES --- GLFW導入 - 何でもプログラミング今回はとりあえず三角形を描画してみたいと思います。 shared_ptrでリソースの管理 OpenGLではCreateとDeleteをきちんと管理…

WindowsでOpenGLES --- GLFW導入

下記の記事にてWIN32APIでOpenGLESを利用する方法を記述しました。 WindowsでOpenGLES --- ANGLE準備 - 何でもプログラミング今回は、ウィンドウの作成やOpenGLESの初期化などをクロスプラットフォームに行ってくれるライブラリ、GLFWを導入してみたいと思い…

WindowsでOpenGLES --- ANGLE準備

WindowsでOpenGLESを使いたい場合は、Google開発のANGLEが利用できます。 GitHub - google/angle: A conformant OpenGL ES implementation for Windows, Mac and Linux.ANGLEを利用すれば、OpenGLESで記述したものを、Direct3DやDesktop OpenGLでレンダリン…

Dlib --- 環境準備

DlibはC++で記述された機械学習用のライブラリです。SVMやDeep Learning等、よく聞くアルゴリズムのものは一通り準備されています。ドキュメントやサンプルが整っているのが一番嬉しい点だと思います。 Dlibダウンロード 下記サイトよりファイル一式をダウン…

GDI+ --- 画像ファイル読み書き

C++で画像ファイルを読み書きする際は、libjpegやlibpng等を利用します。しかしWindowsでは標準ライブラリでないため、ライブラリを準備する必要があります。ちょっと動作確認の時など、ライブラリの準備が面倒な時はGDI+を利用することができます。コードは…

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

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

MediaFoundation --- 音声読み書き

下記記事でMediaFoundationを用いて動画の読み書きを行いました。 MediaFoundation --- 動画の読み込み - 何でもプログラミング MediaFoundation --- 動画書き出し - 何でもプログラミング今回は音声データの読み書きを行ってみたいと思います。分かりやすさ…

MediaFoundation --- 動画書き出し

下記記事にてMediaFoundationで動画を読み込む方法を調べました。 MediaFoundation --- 動画の読み込み - 何でもプログラミング今回は書き出しについて調べたいと思います。尚、見通し優先のため、エラー処理は省いてあります。 アプリケーションコード 動画…