尝试绘制图像

trying to draw over a timage

我写了一个简单的程序(使用Delphi XE7);它有一个 TImage 和一个 TPaintBox(部分位于 Timage 之上)。在 FormPaint 过程中,我调用 "BringToFront" 然后绘制一个(填充的)矩形。该矩形出现在图像下方

procedure TForm1.FormPaint(Sender: TObject);
begin
 with paintbox1 do
   begin
     BringToFront;
     canvas.Rectangle(0,0,width-1,height-1);
   end;
end;

这是程序的图片window:

我希望矩形 图像上方。 我究竟做错了什么? :)

您没有正确使用 PaintBox。 PaintBox 有自己的绘图事件。您应该使用 TPaintBox.OnPaint 而不是 TForm.OnPaint,结果将如您所写。

也可以直接在图片上画。在这种情况下,使用事件 TForm.OnPaint.

您也可以在图像发生变化后(例如加载后)直接在图像上绘制。如果使用 TBitmap 图形,它可以工作。

procedure TForm1.button1click(Sender: TObject);
begin
  image1.LoadFromFile('c:\temp.bmp')
  image1.canvas.Rectangle(0,0,100,100);
end;