在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。
答案 0 :(得分:0)
这可能是由于需要在使用ImageViewer.Bitmap.Canvas之前创建分配给ImageView的位图。
ImageViewer1.Bitmap := TBitmap.Create(Trunc(ImageViewer1.Width), Trunc(ImageViewer1.Height));
您可能已经在代码中的其他位置(在Button Click事件之前)创建了这个ImageViewer.bitmap,但是您的问题和代码难以理解。如果是这样,这个问题将需要更多信息。
即该代码将是:
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