XE5 Android Bitmap.canvas



我正在尝试使用 Bitmap.Canvas 属性在 TImage 上做自定义绘图。在 Windows 上,以下代码可以正确清除带有蓝色填充的整个位图:

Image1.Bitmap := TBitmap.Create;
 with Image1.Bitmap do
 begin
   width := Round(Image1.Width);
   height := Round(Image1.Height);
   with canvas do
   begin
     BeginScene;
           Clear(TAlphaColorRec.Blue);
     EndScene;
   end;
  end;

Android上,位图仍然充满蓝色,但它在TImage内部尖叫。 如何在安卓设备上执行此操作?

对于Android设备,我从Embarcadero专家那里听说,您应该在自定义创建的TBitmap上绘制,然后将其分配给绘制组件的画布。

YouTube上有一个很好的视频,展示了如何在彩盒中绘制像素:

视频

创建位图

Bitmap newBitmap = Bitmap.createBitmap(width, heigth, Config.ARGB_8888);

然后,您应该创建一个画布并将其设置为位图

Canvas cc = new Canvas(newBitmap);

然后你制作新的油漆并设置为想要的颜色

Paint red = new Paint();
red.setColor(android.graphics.Color.RED);
red.setStyle(Paint.Style.FILL);

然后,将"绘画"和"位图"设置为"画布

"
  cc.drawBitmap(newBitmap, 0, 0, red);

首先,Image1是一个设计时间组件是这样的,不需要为它创建位图,你可以根据需要调整它的大小,我认为这就是问题所在

这段代码在安卓上与我完美配合

//

/

image1.bitmap.SetSize(512,512);
if image1.bitmap.Canvas.BeginScene() then
try
  image1.bitmap.Canvas.Clear(TAlphaColorRec.Blue);
finally
  image1.bitmap.Canvas.EndScene;
end;

///

创建如下位图:

Image1.Bitmap:=TBitmap.Create(Round(Image1.Width), Round(Image1.Height));

取而代之的是:

Image1.Bitmap := TBitmap.Create;

最新更新