Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
4-11573
Vovas
2002-09-15 15:00
2002.11.04
Как получить список screen savers в windows?


1-11194
slgeo
2002-10-24 14:59
2002.11.04
Глюки в IDE


6-11366
Oduvan
2002-09-01 16:45
2002.11.04
Научите пожалуйста меня раскодировать строки!!! Плиз!


1-11181
Dunkan
2002-10-23 00:33
2002.11.04
TWebBrowser


4-11558
Balandin_MAx
2002-09-18 16:12
2002.11.04
Нужна помощь с Updateresource





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский