我想在画布上绘制文本。为了进行轮换,我使用了https://forums.embarcadero.com/thread.jspa?messageID=440010 中的以下代码
//bm is a TImage
a := 45;
c:= bm.Canvas;
CurrentM := c.Matrix;
a:=-radian(a);
m.m11:= cos(a); m.m12:=sin(a); m.m13:=0;
m.m21:=-sin(a); m.m22:=cos(a); m.m23:=0;
m.m31:=0; m.m32:=0; m.m33:=1;
c.setmatrix(M);
c.BeginScene;
c.filltext(rectf(100,100,5000,5000), 'test rotated string', false,1,[],ttextalign.taLeading,ttextalign.taLeading);
c.EndScene;
Run Code Online (Sandbox Code Playgroud)
这工作正常。我已将矩形的右侧和底部设置为 5000,这样我就不必担心矩形太小了。
问题是我现在想更改我的 TextAlignment 属性。所以要从右到左绘制文本,我必须调整我的矩形,然后按以下方式绘制它:
c.BeginScene;
c.filltext(rectf((100 - 5000),100,100,5000), 'test rotated string', false,1,[],ttextalign.taTrailing,ttextalign.taLeading);
c.EndScene;
Run Code Online (Sandbox Code Playgroud)
所以基本上我移动了矩形 TopLeft 的 x 值并将其移回 5000(我再次使用 5000 来确保我的文本适合)。然后,我将矩形右下角的 x 值设置为 x 值在上一个示例矩形的 TopLeft 中的位置。这适用于 0 度旋转,但是一旦我更改了度数,我就不会在正确的位置绘制文本。我认为这是因为文本将围绕矩形的 TopLeft 位置旋转(更改为使文本从右向左书写)。
我不知道这只是我遗漏了什么,但我对此问题感到非常沮丧.
当我尝试设置.color属性时,没有可用的值,例如claBlue.
例如:
Canvas.Stroke.Color := claBue.
Run Code Online (Sandbox Code Playgroud)
我错过了参考吗?我已经包括FMX.Types.
有没有人使用designide.dcp为64位操作系统在Firemonkey中成功构建自定义组件?我正在尝试将设计编辑器添加到自定义组件.我按照http://docwiki.embarcadero.com/RADStudio/XE3/en/Creating_a_Component_Editor_and_a_Property_Editor_for_FireMonkey_Components上的教程进行操作.这在编译为32位时工作正常,但我得到以下64位错误:[dcc64致命错误] ComponentEditor.pas(10):E2213错误的打包单位格式:c:\ program files(x86)\ embarcadero\rad studio\11.0\lib\win32\release\designide.dcp.DesignEditors - 预期版本:25.0,Windows Unicode(x64)发现版本:25.0,Windows Unicode(x86)
查看路径,这有意义,因为文件引用了lib\win32.但是,在lib\win64下没有这样的文件.
我一直试图在互联网上找到一个没有运气的解决方案.看起来好像很多人都没有尝试过这个.