我正在尝试使用 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;