【发布时间】:2017-08-19 22:30:00
【问题描述】:
我想用另一种方法在画布上画一些东西。但我做不到。
unit MainFormUnit;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
FMX.Dialogs, FMX.StdCtrls, FMX.Objects, System.Math.Vectors;
type
TMainForm = class(TForm)
Label1: TLabel;
Button1: TButton;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.fmx}
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Canvas.BeginScene;
Canvas.Fill.Color := $FF111111 + random($FFFFFF);
Canvas.Fill.Kind := TBrushKind.Solid;
Canvas.FillRect(RectF(random(300), random(300), random(300), random(300)), 0,
0, [], 1);
Canvas.EndScene;
end;
end.
它不画任何东西。为什么?请不要在 OnPaint 方法中使用绘图操作。
【问题讨论】:
-
在 Windows 上完美运行
-
我自己无法测试,所以我只是评论:将绘图代码更改为
OnPaint事件的形式。然后将OnTimer事件更改为仅调用Invalidate。如果可行,我可以添加一个带有解释的答案。 -
所以图纸应该做另一门课。我将表格发送到该类 Canvas。然后这个类尝试在这个画布上绘制但不成功
-
您必须使用您要绘制的画布父级的
OnPaint事件。 -
但在 Windows 上它可以完美运行。为什么我不能在 Android 上这样做?
标签: android delphi canvas firemonkey delphi-xe7