如何在画布上绘制(android)
我想用另一种方法在画布上画些东西。但我不能如何在画布上绘制(android),android,delphi,canvas,firemonkey,delphi-xe7,Android,Delphi,Canvas,Firemonkey,Delphi Xe7,我想用另一种方法在画布上画些东西。但我不能 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.Vec
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
。如果这是可行的,我可以添加一个答案和解释。所以图纸应该做另一个类。我把表格的画布发给那个班。然后,该类尝试在此画布上绘制,但未成功。您必须使用要绘制的画布父级的OnPaint
事件。但在windows上,它可以完美地工作。为什么我不能在安多德身上这么做?
if Canvas.BeginScene the
begin
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;