Delphi - TPaintBox - Изменить размер

У меня проблемы с изменением размера TPaintBox и рисованием на нем:

На моей Форме (с именем FMain) я удалил TPaintBox (с именем DisplayImage), который я пытаюсь изменить по мере изменения формы.

Для этого я написал метод OnResize() для FMain (я подтвердил, что он вызывается правильно), в котором я пытаюсь изменить размер DisplayImage:

procedure TFMain.FormResize(Sender: TObject);
begin
   DisplayImage.Width := FMain.ClientWidth;
   DisplayImage.Height := FMain.ClientHeight;

   DisplayImage.Canvas.Brush.Color := clGreen;
   DisplayImage.Canvas.Brush.Style := bsSolid;
   DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height);
end;

ИМХО, последний код должен нарисовать зеленый прямоугольник полноразмерного изображения по всему изображению, делая его всегда зеленым. Вместо этого я получаю серое изображение (как и стандартный bg-цвет Delphi), и время от времени во время изменения размера на долю секунды зеленое изображение вспыхивает.

Чего мне не хватает, есть ли какой-то скрытый компонент, который мне нужно обновить после изменения размера?

Заранее спасибо,

Метель

1 ответ

Решение

Прежде всего, вместо того, чтобы делать

DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;

на каждый размер, просто установите Align := alClient коробки краски.

Во-вторых, чтобы нарисовать поле для рисования, используйте OnPaint Событие покрасочной коробки:

procedure TFMain.DisplayImagePaint(Sender: TObject);
begin
   DisplayImage.Canvas.Brush.Color := clGreen;
   DisplayImage.Canvas.Brush.Style := bsSolid;
   DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height)
end;
Другие вопросы по тегам