пытаясь нарисовать образ - PullRequest
1 голос
/ 19 апреля 2020

Я написал простую программу (используя 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;

Это изображение окна программы:

enter image description here

Я ожидал, что прямоугольник будет над изображением. Что я делаю неправильно? :)

1 Ответ

3 голосов
/ 19 апреля 2020

Вы не используете PaintBox правильно. PaintBox имеет собственное событие для рисования. Вы должны использовать TPaintBox.OnPaint вместо TForm.OnPaint, и результат будет таким, как вы написали.

Вы также можете рисовать прямо на картинке. В этом случае используется событие TForm.OnPaint.

Вы также можете рисовать непосредственно на изображении после его изменения (например, после загрузки). Работает, если используется графика TBitmap.

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