如何使用image1.bitmap.bitmapchanged;



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;

相关内容

  • 没有找到相关文章

最新更新