Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
kex86 ©   (2002-09-22 03:43) [0]

Как сохранить в файл регион?
Все наверное сразу скажут

var f:file of cardinal;
rgn:cardinal;
begin
...
assignfile(f,"...");
rewrite(f);
write(rgn);
closefile(f);
...
end;

ну так вот:
когда создаешь регион, delphi выдает его handle, поэтому весь регион выражается cardinal"ом. Значит при взятии этого handl"а из файла берется только дескриптор, а не регион, который в программе не определен. Как быть?
я пробовал через extcreateregion и GetRegionData, наверное как-то так и надо, но у меня хелпер про это токо на C++ и на английском.


 
MBo ©   (2002-09-22 06:49) [1]

>хелпер про это токо на C++ и на английском.
А что делать, все так живут ;)

procedure TForm1.Button1Click(Sender: TObject);
var
h: HRGN;
RD: Pointer;
Sz: Integer;
pt: array[0..3] of TPoint;
fs: TfileStream;
begin
pt[0].x := 100;
pt[0].y := 100;
pt[1].x := 100;
pt[1].y := 200;
pt[2].x := 300;
pt[2].y := 200;
pt[3] := pt[0];

h := CreatePolygonRgn(pt, 3, 0);
FillRgn(Canvas.Handle, h, GetStockObject(DkGray_Brush));
Sz := GetRegionData(h, 0, nil);//узнаем размер
Caption := IntToStr(SZ);
GetMem(RD, Sz);
GetRegionData(h, Sz, RD);//получаем данные региона
fs := TFileStream.Create("e:\rdata.dat", fmCreate);
fs.Write(RD^, sz);
fs.Free;
FreeMem(RD);
DeleteObject(H);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
h: HRGN;
RD: PRgnData;
Sz: Integer;
fs: TfileStream;
begin
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(GetClientRect);
fs := TFileStream.Create("e:\rdata.dat", fmOpenRead);
Sz := fs.Size;
GetMem(RD, Sz);
fs.Read(RD^, Sz);
Caption := IntToStr(SZ);
fs.Free;
h := ExtCreateRegion(nil, Sz, Rd^);
FillRgn(Canvas.Handle, h, GetStockObject(White_Brush));
DeleteObject(h);
end;

возможно, следует подумать об использовании метафайлов, что очень удобно для записи действий gdi и последующего воспроизведения.



Страницы: 1 вся ветка

Текущий архив: 2002.11.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
1-11175
MixerPro
2002-10-21 13:32
2002.11.04
Как определить платформу ОС ?


14-11424
Dmitriy Polskoy
2002-10-15 10:24
2002.11.04
Delphi Personal


3-11133
Quaker
2002-10-17 05:50
2002.11.04
array of const


14-11422
TTCustomDelphiMaster
2002-10-14 22:53
2002.11.04
MyMail.com


14-11401
zzet
2002-10-12 23:39
2002.11.04
Не было меня в той хате, куда закрыли этого кадра..