Delphi - TPaintBox - Изменить размер - PullRequest
1 голос
/ 14 июля 2010

У меня проблемы с изменением размера 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), и время от времени во время изменения размера в течение доли секунды мигает зеленое изображение.

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

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

BliZZarD

1 Ответ

8 голосов
/ 14 июля 2010

Во-первых, вместо того, чтобы делать

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;
...