Главная страница
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.015 c
14-11481
AL2002
2002-10-16 13:42
2002.11.04
Чем отличается форум WinAPI от Основного форума?


1-11158
VaS
2002-10-23 21:06
2002.11.04
string в record


1-11289
Демонов Е.В.
2002-10-23 15:22
2002.11.04
Вопрос про дерективу


1-11307
id_privin
2002-10-22 15:16
2002.11.04
Как победить Invalid class typecast в DLL


4-11533
Oxy2
2002-09-20 11:40
2002.11.04
Как получить хендл главного окна приложения.