Delphi FMX TPaintBox Canvas.FillText在Windows 10上无法正常工作
我有一个带有fmx的多设备应用程序。在Form1上,只有一个名为pbox的TPaintBox。在PBoExpaint中,我画所有的画。有了位图,它的功能比exspected更好更快!(对游戏开发者来说是件好事,更多的广告将有助于启动旧的糟糕的工作解决方案)。但是对于Canvas.FillText,有几个错误Delphi FMX TPaintBox Canvas.FillText在Windows 10上无法正常工作,delphi,firemonkey,paint,Delphi,Firemonkey,Paint,我有一个带有fmx的多设备应用程序。在Form1上,只有一个名为pbox的TPaintBox。在PBoExpaint中,我画所有的画。有了位图,它的功能比exspected更好更快!(对游戏开发者来说是件好事,更多的广告将有助于启动旧的糟糕的工作解决方案)。但是对于Canvas.FillText,有几个错误 水平对齐是错误的。TTEXTALLIGN。前导将文本向右对齐,TTEXTALLIGN。尾随将文本向左对齐。中锋没问题。垂直定线工作正常 “你好,彼得·克洛!”显示为“!你好,彼得·克洛。这
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Objects, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs;
type
TForm1 = class(TForm)
pbox: TPaintBox;
procedure FormCreate(Sender: TObject);
procedure pboxPaint(Sender: TObject; Canvas: TCanvas);
procedure TForm1.pboxPaint(Sender: TObject; Canvas: TCanvas);
begin
Canvas.Fill.Color := TAlphaColors.Red;
mRect := TRectF.Create(form1.ClientRect);
Canvas.FillText(mRect, 'Hello Peter Kloß!', false, 0.5,
[TFillTextFlag.RightToLeft], TTextAlign.Center, TTextAlign.Leading);
end;
环境
德尔福社区版10.3.3
视窗10
Fmx
中,水平和垂直对齐以相同的常数运行,但以水平响应。垂直方向和水平对齐,同时考虑阅读顺序
a。如果阅读顺序为[]
(意思是LeftToRight
),则水平对齐TTextAlign。前导
表示文本放置在左边缘。如果水平对齐方式为TextAlign.training
,则文本放置在右边缘
b。如果读取顺序为[TFillTextFlag.RightToLeft]
,则这些标志的含义相反
[]
特别是第2点可以讨论,但堆栈溢出不是进行此类讨论的合适位置。您似乎启用了RightToLeft。去掉它,一切都应该如预期的那样。Canvas.FillText(mRect,“Hello Peter Kloß!”,false,0.5,[],TTextAlign.Center,TTextAlign.Leading);