如何在firemonkey应用程序中绘制Bitmap高质量文本?
我的表单中有TImage
imgStory
名称。
我试过这段代码,但它没有用,imgStory仍然显示空白!
imgStory.Canvas.Stroke.Kind := TBrushKind.bkSolid;
imgStory.Canvas.StrokeThickness := 1;
imgStory.Canvas.Fill.Color := TAlphaColors.Red;
mRect.Create(100, 229, 300, 250);
imgStory.Canvas.FillText(mRect, 'Hello Text!', false, 100, [TFillTextFlag.ftRightToLeft],
TTextAlign.taCenter, TTextAlign.taCenter);
答案 0 :(得分:3)
因此它的Timage需要首先加载或创建位图,然后在位图上绘图。您还需要绘图命令周围的startscene和endscene。要从文件创建位图:
imgstory.bitmap.createfromfile(filename);
或者你可以创建一个空白的:
imgstory.bitmap.create(width,height);
然后绘图成为:
imgstory.Bitmap.canvas.BeginScene();
imgStory.Bitmap.canvas.Stroke.Kind := TBrushKind.bkSolid;
imgStory.Bitmap.canvas.StrokeThickness := 1;
imgStory.bitmap.Canvas.Fill.Color := TAlphaColors.Red;
mRect.Create(100, 229, 300, 250);
imgStory.bitmap.Canvas.FillText(mRect, 'Hello Text!', false, 100, [TFillTextFlag.ftRightToLeft],
TTextAlign.taCenter, TTextAlign.taCenter);
imgstory.bitmap.Canvas.endscene
答案 1 :(得分:1)
我知道这是一个古老的问题,但我遇到了它,并让它在我的最终工作。这是我的代码。我想也许这就是你设置的方式。我不认为只调用.create()函数而不将输出设置为变量就行了。
Image1.Bitmap.canvas.Stroke.Kind := TBrushKind.bkSolid;
Image1.Bitmap.canvas.StrokeThickness := 1;
Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Red;
Image1.Bitmap.Canvas.Font.Size:=36;
Image1.Bitmap.Canvas.Font.Family:='Arial';
Image1.Bitmap.Canvas.Font.Style:=[TFontStyle.fsbold];
ARect := TRectF.Create(100, 229, 400, 270);
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.FillText(ARect, 'Hello Text!', false, 100, [], TTextAlign.taCenter);
Image1.Bitmap.Canvas.EndScene;
答案 2 :(得分:0)
当您使用paint方法而不是paint方法绘制画布时,需要使用startscene和endscene包围绘图命令。
在代码之前添加一行:
imgStory.canvas.beginscene;
并在您的代码之后:
imgStory.canvas.endscene;