gpt4 book ai didi

android - 固定 : canvas. fmx 字体在 android 上的填充文本被 block 背景包围

转载 作者:搜寻专家 更新时间:2023-11-01 09:33:18 26 4
gpt4 key购买 nike

已修复,请参阅答案。

我找到了有关如何使用 firemonkey 获取文本的帖子。我有一个图形图像,我想在上面贴上标签。我使用 .filltext 并在 win32 上进行了测试,一切都很好。但是当我在 android 上运行时,文本只是背景上的白色 block 。显然我需要设置字体正在使用的画笔,但我不清楚如何设置。 (我已经通过 android 缩放正确调整了位图的大小,并且我的 drawpolygon 正在按预期工作)

代码段如下。

  Image1.bitmap.Canvas.BeginScene;
Image1.bitmap.canvas.Clear(TAlphaColors.Black);
Image1.bitmap.Canvas.Stroke.Thickness := 1;
Image1.bitmap.Canvas.Stroke.Color := TAlphaColorRec.Yellow;
Image1.bitmap.Canvas.DrawPolygon(FPoints2, 1); // polygon
// now testing text
Canvas.Font.Size := 40;
Image1.bitmap.mRect.Create(0, 0, (image1.width),( image1.height));
Image1.bitmap.Canvas.filltext(mRect, 'Hello Text!', false, 1,
[TFillTextFlag.RightToLeft],TTextAlign.Center, TTextAlign.Trailing);
Image1.bitmap.Canvas.EndScene;

最佳答案

底线...如果您在 android 上使用 filltext,则文本颜色及其周围的背景设置如下:

Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow;//text color
Image1.Bitmap.Canvas.Fill.DefaultColor:=TAlphaColors.black; //background

这与 win32 平台不同,在 win32 平台上 Image1.bitmap.Canvas.Stroke.Color 设置文本颜色并且文本周围似乎有透明背景......

因此,对于其他与此问题作斗争的人来说,这里的代码在 android 和 win32 上都可以工作。如果有人有帮助的评论,我将不胜感激,尤其是能够将背景设置为透明的必须记录在案。我无法在互联网上的任何地方找到此信息。谢谢罗伯特

procedure TMainFrm.draw_waveform;
var
mrect:trect; //yellow waveform on black background with yellow text

begin
waveformunit.init(image1); // the two steps commented below done elsewhere
// VERY important to do this for android otherwise it doesn't work!!!
// Image.Bitmap.SetSize(Trunc(Image.Width * Image.Canvas.Scale),
// Trunc(Image.Height * Image.Canvas.Scale));
// Image.Bitmap.canvas.Clear(TAlphaColors.black);
to_polygon;

Image1.bitmap.Canvas.BeginScene;
Image1.Bitmap.canvas.Clear(TAlphaColors.black);
Image1.bitmap.Canvas.Stroke.Thickness := 1;
Image1.bitmap.Canvas.Stroke.Color := TAlphaColorRec.Yellow; //polygon line color
Image1.bitmap.Canvas.DrawPolygon(FPoints2, 1); // polygon
//now test text
Image1.Bitmap.canvas.Stroke.Kind := TBrushKind.bkSolid;
Image1.Bitmap.canvas.Stroke.Thickness := 1;
Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow; //text color
Image1.Bitmap.Canvas.Fill.DefaultColor:=TAlphaColors.black; // to match background
Image1.Bitmap.Canvas.Font.Size:=36;
Image1.Bitmap.Canvas.Font.Family:='Arial';
Image1.Bitmap.Canvas.Font.Style:=[TFontStyle.fsbold];
Image1.bitmap.canvas.Blending:=false;
Image1.bitmap.Canvas.Font.Size := 40;
mRect.Create(0, 0,round(image1.width),round( image1.height));
Image1.bitmap.Canvas.filltext(mRect, 'Hello Text!', false, 1,
[TFillTextFlag.RightToLeft],TTextAlign.Center, TTextAlign.Trailing);
Image1.bitmap.Canvas.EndScene;

//inc(numberdrawn);
end;

关于android - 固定 : canvas. fmx 字体在 android 上的填充文本被 block 背景包围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45428017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com