我尝试在位图上绘图。这在 Windows 中运行良好,但在 Android 中会产生分段错误(无论如何,这就是 Delphi 所说的,我只是在 Android 上没有看到任何反应)。我有一个移动项目,表单只包含一个 TToolbar、TSpeedButton、两个 TLabel 和一个 TImage。TSpeedButton 点击只有一个事件处理程序。
当我注释掉注释下方的所有内容时,代码在 Android 中运行良好。当我尝试使用调试器时,代码可以正常工作到程序结束。没有看到绘图或分段错误。当我让它运行时出现故障。
我究竟做错了什么?
procedure TForm2.Button_DrawClick (Sender: TObject);
var rct: TRectF;
h, w: Int32;
begin
h := Trunc (Image.Height);
w := Trunc (Image.Width);
Label_Height.Text := IntToStr (h);
Label_Width .Text := IntToStr (w);
rct := TRectF.Create(20, 20, w - 20, h - 20);
// can be commented out below //
Image.Bitmap.Create (w, h);
if Image.Bitmap.Canvas.BeginScene then
try
Image.Bitmap.Canvas.Stroke.Color := $FF0000FF;
Image.Bitmap.Canvas.StrokeThickness := 3;
Image.Bitmap.Canvas.DrawEllipse (rct, 20);
Image.Bitmap.Canvas.Stroke.Color := $FF00FF00;
Image.Bitmap.Canvas.DrawRect(rct, 0, 0, AllCorners, 40);
finally
Image.Bitmap.Canvas.EndScene;
end; // try..finally
end; // Button_DrawClick //