bitmap.bitmapchanged;在FMX.Graphics中受到保护,因此我无法使用该过程。
使用时期或timagecontroler我正在绘制一条线,但线条没有显示。
我正在使用此片段:
imgc1.Bitmap.Canvas.BeginScene;
imgc1.Bitmap.Canvas.DrawLine(FStartPoint,FEndPoint, 100);
imgc1.Bitmap.Canvas.EndScene;
imgc1.Bitmap.BitmapChanged; // the original example said that this would redraw the image. In my CE Rio IDE the BitmapChanged is undefind. How can I use it?
画线。IDE找不到位图。
bitmapchanged是受保护的成员。我需要编写一些代码来处理onbitmapchanged事件。我现在知道了。在德尔菲(Delphi(发展了将近30年,这是我第一次遇到受保护的成员。我所使用的示例一定不编译,否则作者的错误与我的错误相同。
TBitmap.BitmapChanged()
是一种virtual
方法,只需触发公共TBitmap.OnChange
事件即可。由于它是protected
,您可以使用访问者类来达到它:
type
TBitmapAccess = class(TBitmap)
end;
TBitmapAccess(imgc1.Bitmap).BitmapChanged;
但是,这并不需要。TImage
将自己的内部OnChange
事件处理程序分配给其Bitmap
。因此,它应该自动对Bitmap
的更改做出反应。但是,如果由于某种原因没有,刷新TImage
的正确方法是调用其Repaint()
方法:
imgc1.Repaint;
这正是TImage
的内部OnChange
处理程序:
constructor TImage.Create(AOwner: TComponent);
begin
inherited;
FBitmap := TBitmap.Create(0, 0);
FBitmap.OnChange := DoBitmapChanged;
...
end;
procedure TImage.DoBitmapChanged(Sender: TObject);
begin
Repaint;
UpdateEffects;
end;