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;