DirectWrite.TextLayout转换矩阵无效



我正在使用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不兼容,从而导致我的问题?

传递给IDWriteTextLayout构造函数的转换只影响布局的暗示/网格拟合和细微指标(除非您需要GDI兼容的像素对齐指标,否则创建自然布局的其他构造函数将提供更准确的子像素布局)。要绘制不同方向的文本布局,必须设置要绘制的内容的变换(如果使用D2D设备上下文/渲染目标,则设置SetTransform;如果使用IDWriteBitmapRenderTarget,则设置CurrentTransform)。

相关内容

  • 没有找到相关文章

最新更新