Главная страница
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.014 c
14-11467
vopros
2002-10-16 09:43
2002.11.04
Нужна ссылка на ГОСТы лучше 2.501-88


1-11313
GreatMaster
2002-10-23 08:54
2002.11.04
Как открыть через ShellExecute в IE3 (третьем) URL с закладкой?


14-11382
Ich Hasse
2002-10-12 22:36
2002.11.04
Delphi 7???


4-11565
chsv
2002-09-16 18:57
2002.11.04
как изменить в сис.меню Alt+F4 на Ctrl+F4?


3-11066
weak
2002-10-15 11:29
2002.11.04
Формат вывода в MSSQLе