DirectWrite ( SharpDX 経由) を使用して TextLayout を描画していますが、いくつかのことを除いて期待どおりに動作します。この TextLayout コンストラクターを呼び出しています。
http://sharpdx.org/documentation/api/m-sharpdx-directwrite-textlayout--ctor-2
私のコードはかなり簡単です:
// define 45 deg rotation matrix
var transformMatrix = new SharpDX.DirectWrite.Matrix();
transformMatrix.M11 = 0.7f;
transformMatrix.M12 = 0.7f;
transformMatrix.M21 = -0.7f;
transformMatrix.M22 = 0.7f;
transformMatrix.Dx = 0;
transformMatrix.Dy = 0;
var pixelsPerDip = 5;
var TextLayout = new SharpDX.DirectWrite.TextLayout(DWFactory, "Hello world!",
TextFormat, 400, 200, pixelsPerDip, transformMatrix, true);
変換行列を任意の値に変更できますが、出力には影響しません。pixelsPerDip
また、ゼロを指定するとテキストが描画されないことを除いて、効果がないこともわかりました。SharpDX ソースを掘り下げたところ、これらの入力は正しく処理されているようです。私は何を間違っていますか?
私が使用している TextLayout コンストラクターは、CreateGdiCompatibleTextLayout()
. 私が行っている/使用している何かが GDI と互換性がなく、それが原因で問題が発生する可能性はありますか?