2

我正在尝试使用 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 上,Bitmap 仍然充满蓝色,但它在 TImage 内尖叫。如何在 Android 设备上执行此操作?

4

4 回答 4

1

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

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

视频

于 2014-01-03T12:10:22.970 回答
0

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

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

///////////////////////////////////////// /////////

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

///////////////////////////////////////// /////////

于 2013-09-29T07:26:21.657 回答
0

像这样创建位图:

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

而不是这个:

Image1.Bitmap := TBitmap.Create;
于 2013-11-12T14:58:12.297 回答
0

创建位图

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);
于 2013-09-17T12:45:47.753 回答