Вы не можете написать такое стандартное приложение для Windows. Вы должны сделать свою картину в ответ на WM_PAINT
сообщений. В терминах Delphi это равносильно переопределению метода Paint
потомка TWinControl
или, возможно, использованию TPaintBox
и предоставлению обработчика событий OnPaint
. Я собираюсь предположить, что вы используете TPaintBox
.
Если вам нужно избегать мерцания, то обычная практика - рисовать в закадровом растровом изображении, а затем показывать это, когда вас просят нарисовать.
Ваше приложение, вероятно, должно использовать таймер для обеспечения регулярного импульса. Затем, на каждом импульсе, обновляйте свое изображение за пределами экрана. Затем вызовите Invalidate
на вашем поле для рисования, чтобы запустить цикл рисования.
Код может выглядеть следующим образом:
procedure TMainForm.RefreshTimerTimer(Sender: TObject);
begin
RedrawOffscreenBitmap;
PaintBox.Invalidate;
end;
procedure TMainForm.RedrawOffscreenBitmap;
begin
//paint to FOffscreenBitmap
end;
procedure TMainForm.PaintBoxBox(Sender: TObject);
begin
PaintBox.Canvas.Draw(0, 0, FOffscreenBitmap);
end;