Главная страница
    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
1-11282
volph777
2002-10-22 19:01
2002.11.04
как Char конвертнуть в TSysCharSet?


1-11167
Gaber
2002-10-23 15:48
2002.11.04
Использование текущей даты в имени файла


1-11258
CrowD
2002-10-22 15:30
2002.11.04
Как обратится к элементу динамического массива?


1-11147
Stocker!
2002-10-24 10:13
2002.11.04
TImage и таблица Word или Excel


1-11263
Lizard
2002-10-22 20:17
2002.11.04
Помогите совместить два исходника в один.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский