読者です 読者をやめる 読者になる 読者になる

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 --- 動画の読み込み - 何でもプログラミング今回は書き出しについて調べたいと思います。尚、見通し優先のため、エラー処理は省いてあります。 アプリケーションコード 動画…

MediaFoundation --- 動画の読み込み

下記記事にてOpenCVで動画を読み書きする方法を調べました。 OpenCVで動画読み込み&書き込み - 何でもプログラミング今回はWindows特有のMediaFoundationを利用して動画を読み込んでみます。全体の流れの把握重視の為、エラー処理は全て省いてあります。 ア…

OpenCVで動画読み込み&書き込み --- C++/CLIでラップ

下記記事にてOpenCVで動画を読み書きする方法を調べました。 OpenCVで動画読み込み&書き込み - 何でもプログラミング今回は.Netで利用できるよう、C++/CLIでラップしてみたいと思います。尚、Matクラス(Mat8UC1クラス)は下記記事のものを利用しています。 O…

OpenCVで動画読み込み&書き込み

OpenCVのダウンロードは下記記事を参照してください。 OpenCVをC++/CLIでラップ - 何でもプログラミング VideoCapture 動画を読み込むにはVideoCaptureクラスを利用します。パスを指定して開き、>>オペレータでフレームを取得します。 cv::VideoCapture capt…

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

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

F#でWPF --- OpenCV連携

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

C++/CLIラッピング --- 逆引き

C++を.Netで利用する際、C++/CLIで必要になりそうなことをまとめていきます。随時更新予定です。 クラスラップ基本構造 public ref class NetClass { public: NetClass() { _cppClass = new CppClass(); } ~NetClass() { this->!NetClass(); } // Dispose() …

OpenCVをC++/CLIでラップ

今回はOpenCVをF#から扱えるようにしてみたいと思います。OpenCVはC++のライブラリであるため、C++/CLIを用いてF#から扱えるようにします。 OpenCV取得 下記サイトから、バイナリとソースがセットになったファイルをダウンロードします。解凍(exe実行)して…

Elm --- 階層化

Elm

下記記事にてElmを用いてカウンタを実装しました。 Elm --- Model、View、Update - 何でもプログラミング今回はこのカウンタを再利用して、複数のカウンタを配置してみます。内容はElmのTutorialにあるものとほとんど同じです。 作成するアプリケーション カ…

リフレクション 逆引き (F#)

F#

F#でリフレクションを利用するときに、やり方を忘れていることがよくあるため、ここを備忘録にしたいと思います。今後適宜追加していこうと思います。 Type取得 let t = typeof<int> TypeDefinition取得 let t = typedefof<List<_>> TypeDefinitionからType作成 let t = t</list<_></int>…

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

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

Visual Studioと通信(F#)

通常、VisualStudioに機能を追加する際は、VSIXを作成してインストールします。今回は外部からVisualStudioと通信してみます。 VisualStudioを見つける(DTEの取得) RunningObjectTableからDTEのオブジェクトを取得しています。DTEはIDE以外のも取れること…

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

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

F# --- TypeProvider --- クイックスタート

F#

F#にはコンパイル時に型を生成するTypeProviderという仕組みがあります。 (実際にはインテリセンスを働かせるため、コンパイル時以外に逐次生成されています。)今回は独自のTypeProviderを作成していきます。 作成する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#)

F#

F#では既存の型を拡張して、プロパティを追加することができます。今回はいくつか使い方を紹介します。 Getterのみ Listを拡張してみます。ジェネリックなクラスは拡張できないので、ベースのIListを拡張します。Countの2倍の値を返すCountDoubleを実装して…

F#スクリプト

F#

F#スクリプトは、わざわざソリューションやプロジェクトを作成することなく利用できるため、とても便利です。 fsxファイル作成 F# Interactiveに直接入力しても動作しますが、fsxファイルに記述したほうがインテリセンスやデバッグを利用できるためfsxを作成…

サブフォルダを含む、フォルダ内のファイルの取得(F#)

F#

下記のようなフォルダ構造があった際に、file1.txt、file2.txt、file1_1.txtのパスを取得する関数をF#で実装します。 breadthFirstSearch 汎用的な幅優先探索を実装します。開始点と、要素から子要素を取得する関数を入力とします。Queueを用いて手続き的な…

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と共に送る…

ネストしたレコードの更新 (F#)

F#

ネストしたレコードの下層のほうを更新しようとすると下記のような記述となります。本来なら上層に下層を更新するメンバー関数を用意しておくのが理想ですが、面倒な場合用に簡素な記述で更新できる関数を実装します。 type Container = { Value : int } typ…

SodiumでFunctional Reactive Programming (F#) --- 現在値の参照

現在値を参照しない例 Streamの入力があると値が100となる、初期値0のCellは以下のように記述できます。 let value = input |> Stream.mapTo 100 |> Stream.hold 0 現在値を参照する例 Streamの入力があると1ずつ増加する、初期値0のCellは以下のように記述…

SodiumでFunctional Reactive Programming (F#) --- WPF連携

下記記事ではコンソールアプリケーションにてSodiumを実装しました。 SodiumでFunctional Reactive Programming (F#) --- 導入 - 何でもプログラミング今回はSodimuをWPFのMVVMに対応させたバージョンを実装します。 全体構造 CommandをStreamに、CellをProp…