在ImageView中绘制文本它不起作用? Delphi XE8 Android

问题描述 投票:1回答:1

在ImageView中绘制文本它不起作用? Delphi XE8 Android

procedure TForm1.Button1Click(Sender: TObject);
  var
    Rect: TRectF;
  begin
    with ImageViewer1.Bitmap do
      begin
        SetSize(Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height));
        Clear(TAlphaColors.White);
        Canvas.BeginScene();
        Canvas.Stroke.Kind := TBrushKind.Solid;
        Canvas.Fill.Color := TAlphaColors.Black;
        Canvas.Font.Size := 60;
        Rect.Create(0, 0, Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height));
        Canvas.FillText(Rect,
                        Edit1.Text,
                        False,
                        100,
                        [],
                        TTextAlign.Center,
                        TTextAlign.Center);
        Canvas.EndScene();
      end;
end;

生成的图像很小,不会绘制指示的文本。但是,如果您绘制给定文本,则会生成Windows映像。这是非常罕见的,因为在所有平台上应该工作相同,但在这种情况下它不是。 TImage和TImageView经过测试且无法在Android上运行,它仅适用于Windows。

android delphi delphi-xe7 delphi-xe8
1个回答
0
投票

这可能是由于需要在使用ImageViewer.Bitmap.Canvas之前创建分配给ImageView的位图。

ImageViewer1.Bitmap := TBitmap.Create(Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height));

您可能已经在代码中的其他位置创建了此ImageViewer.bitmap(在您的Button Click事件之前),但您的问题和代码是模糊的知道这一点。如果是这样,问题将需要更多信息。

即代码将是:

procedure TForm1.Button1Click(Sender: TObject);
var Rect: TRectF;
begin
    ImageViewer1.Bitmap := TBitmap.Create(Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height));
    with ImageViewer1.Bitmap do
    begin
      ....etc
© www.soinside.com 2019 - 2024. All rights reserved.