这是我的代码:

procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
var
  i: Integer;
begin
  Randomize;
  Paintbox1.Canvas.Brush.Color:=clWhite;
  Paintbox1.Canvas.Rectangle(0,500,500,0);
  Paintbox1.Canvas.MoveTo(1,0);
  Paintbox1.Canvas.LineTo(1,500);
  Paintbox1.Canvas.Pixels[xx,yy]:=clBlack;
  ...
end;

当我试图编译这段代码时,我得到:
未声明标识符
“画笔”、“颜色”、“矩形”、“移动到”、“线条到”、“文本输出”、“像素”。

最佳答案

错误标识符未声明表示paintbox1对象不包含属性和方法“brush”、“color”、“rectangle”…
在这种情况下,这是因为delphi使用新的firemonkey(fmx)框架进行android开发,而不是vcl。这两个框架中的类和控件具有完全不同的根,虽然它们确实有一些相似之处,但它们的功能、属性和方法却截然不同。底线是,您不能使用与VCL用于Windows开发的代码相同的代码。
有关fmx tcavas类的更多信息,请访问:
http://docwiki.embarcadero.com/Libraries/XE7//en/FMX.Graphics.TCanvas_Properties
http://docwiki.embarcadero.com/Libraries/XE7//en/FMX.Graphics.TCanvas_Methods
如您所见,fmx tcavas不再具有“brush”属性,而是具有“fill”和“stroke”笔刷。

  PaintBox1.Canvas.Fill.Color := TAlphaColorRec.White;
  PaintBox1.Canvas.FillRect(RectF(0, 0, 500, 500), 0, 0, AllCorners, 1);

  PaintBox1.Canvas.Stroke.Color := TAlphaColorRec.Blue;
  PaintBox1.Canvas.Stroke.Kind := TBrushKind.Solid;
  PaintBox1.Canvas.Stroke.Thickness := 1;
  PaintBox1.Canvas.Stroke.Join := TStrokeJoin.Miter;
  PaintBox1.Canvas.DrawLine(TPointF.Create(1, 0), TPointF.Create(1, 500), 1);

关于android - Android:未声明标识符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26528795/

10-09 04:29