
03.05.2015, 13:02
|
 |
Начинающий
|
|
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
|
|
Перерисовка по изменению размера формы
Программависнетчтоделать?
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Unit2;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormPaint(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Thread1 := TThread1.Create
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Thread1.Suspended := False // запускаем поток
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Draw(0, 0, Bitmap1) // получаем изображение из Bitmap1
end;
end.
Код:
unit Unit2;
interface
uses
System.Classes, Vcl.Graphics;
type
TThread1 = class(TThread)
protected
procedure Execute; override;
end;
var
Thread1: TThread1;
Bitmap1: TBitmap;
implementation
uses
Unit1;
procedure TThread1.Execute;
begin
Bitmap1.Canvas.Lock; // блокируем холст (для избежания ошибки)
repeat
Bitmap1.SetSize(Form1.ClientWidth, Form1.ClientHeight); // определяем размер изображения
Form1.FormPaint(Nil); // запускаем событие
Thread1.Suspended := True // приостанавливаем поток
until False
end;
initialization
Bitmap1 := TBitmap.Create
finalization
Bitmap1.Canvas.Unlock;
Bitmap1.Free
end.
Последний раз редактировалось SpectraL, 03.05.2015 в 19:41.
|