我正在使用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不兼容,从而导致了我的问题?
发布于 2013-10-30 00:57:59
传递给IDWriteTextLayout构造函数的转换只会影响布局的暗示/网格拟合和微妙的度量(除非您需要GDI兼容的像素对齐度量,否则创建自然布局的另一个构造函数将提供更精确的亚像素布局)。要绘制具有不同方向的文本布局,必须设置要绘制到的内容的转换(如果使用的是SetTransform设备上下文/呈现目标或SetCurrentTransform (如果是IDWriteBitmapRenderTarget) )。
https://stackoverflow.com/questions/17815599
复制相似问题