![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер рисунка
FlyDragon © (2004-06-15 17:50:00)Как с помощью WINAPI узнать высоту и ширину рисунка не открывая его самого, т.е. не создавая TBitmap и не загружая его в него растр из того рисунка.
Rouse_ (2004-06-15 20:35:00) [1]
function PictureSize: TSize;
var
ResHandle: HWND;
ResData: HWND;
BMI: PBitmapInfo;
begin
Result.cx := 0;
Result.cy := 0;
ResHandle := FindResource(HInstance,
MAKEINTRESOURCE(200), RT_BITMAP);
if ResHandle <> 0 then
begin
ResData := LoadResource(HInstance, ResHandle);
if ResData <> 0 then
try
BMI := LockResource(ResData);
if Assigned(BMI) then
try
Result.cx := BMI.bmiHeader.biWidth;
Result.cy := BMI.bmiHeader.biHeight;
finally
UnlockResource(ResData);
end;
finally
FreeResource(ResData);
end;
end;
end;
---
Желаю успехов
SPV (2004-06-15 18:52:00) [2]var
hfbm, dwRead : Cardinal;
bmfh : BITMAPFILEHEADER;
bmih : BITMAPINFOHEADER;
begin
hfbm := CreateFile(PChar('c:\temp\dnarrow.bmp'), GENERIC_READ,
FILE_SHARE_READ, NiL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY,
0);
ReadFile(hfbm, bmfh, sizeof(BITMAPFILEHEADER),
dwRead, NiL);
ReadFile(hfbm, bmih, sizeof(BITMAPINFOHEADER),
dwRead, Nil);
Структура BITMAPINFOHEADER
typedef struct tagBITMAPINFOHEADER{ // bmih
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;