少々試してみたので自分へのメモ程度に
利用するパッケージは、SharpDXとSharpDX.Direct2D1というもの(SharpDX.DXGIも同時に入るっぽい)
usingには以下を指定した。
1 2 3 4 |
using SharpDX; using SharpDX.Direct2D1; using SharpDX.DirectWrite; using SharpDX.Mathematics.Interop; |
ウインドウ型のRenderTargetを作って、描画時にクリアして文字列を書くみたいなもの。今回は、Panelに描いている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public partial class Form1 : Form { private WindowRenderTarget render; public Form1() { InitializeComponent(); var hwnd = new HwndRenderTargetProperties(); hwnd.Hwnd = panel1.Handle; hwnd.PixelSize = new Size2(panel1.Width, panel1.Height); var factory = new SharpDX.Direct2D1.Factory(); render = new SharpDX.Direct2D1.WindowRenderTarget(factory, new RenderTargetProperties(), hwnd); } private void Form1_Paint(object sender, PaintEventArgs e) { render.BeginDraw(); render.Clear(new RawColor4(0.1f, 0.1f, 0.0f, 1.0f)); var fontFactory = new SharpDX.DirectWrite.Factory(); var textFormat = new TextFormat(fontFactory, "メイリオ", 24.0f); var textBrush = new SharpDX.Direct2D1.SolidColorBrush(render, new RawColor4(0.4f,0.6f,0.5f,1f)); render.DrawText("あいうえお", textFormat, new RawRectangleF(10, 10, 400, 50), textBrush, DrawTextOptions.None); render.EndDraw(); } } |
実行するとこんな感じで表示される。
C++でやるのと似ているので、わかれば難しくはないのだろうけど、クラスを探してくるのに一苦労…。たぶん、C#ってライブラリが膨大にあるから、どんなプログラミングでもそうなんでしょうけど。