Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.02;
Скачать: CL | DM;

Вниз

BMP и API   Найти похожие ветки 

 
Ich Hasse ©   (2002-09-15 12:44) [0]

Люди подскажите пожалуйста, вот столкнулся с такой проблемой:
Есть BMP, ее надо вывести на форму? КАК???
Смысл в том, что все это надо сделать через API не используя модуля Graphics и соответственно компонента TCanvas и TBitMap.
Пожалуйста с исходниками, или хотя бы примерно где искать???


 
Poirot ©   (2002-09-15 12:52) [1]

CreateBitmap или что-то вроде этого!!!


 
Ich Hasse ©   (2002-09-15 12:57) [2]

CreateCompatibleBitmap
LoadBitMap
SelectObject
GetDC
BitBlt

вот вроде все нужные функции, но что с ними делать???


 
Poirot ©   (2002-09-15 13:49) [3]

RTFM


 
Ich Hasse ©   (2002-09-15 14:04) [4]

Это что такое???


 
Mirovodin ©   (2002-09-15 14:12) [5]

2 Ich Hasse ©

Read The Fucking Manual :)

По поводу вопроса, если только используя API -
нужно использовать не TBitmap (о котором Windows вообще ничего не знает) а HBitmap соответственно использовать функции CreateDibBitmap, контекст устройства HDC и BitBlt:

Создание:
Bitmap:=CreateDIBitmap( ... );
...
Отрисовка

var

ps : TPAINTSTRUCT; // Переменная под структуру TPAINTSTRUCT
MemDC : hDC; // Контекст устройства
bm : TBitmap; // Переменная структуры TBitmap,
// не путать с классом TBitmap
...

BeginPaint(hWindow, ps);
MemDC:=CreateCompatibleDC(ps.hdc);
SelectObject(MemDC, Bitmap);
GetObject(Bitmap, sizeof(TBITMAP), @bm);
BitBlt(ps.hdc, 10, 10, bm.bmWidth, bm.bmHeight, MemDC, 0, 0, SRCCOPY);
DeleteDC(MemDC);
EndPaint(hWindow, ps);

P.S. Сразу видно, человек FIDO в глаза не видел.


 
Poirot ©   (2002-09-15 14:48) [6]


> P.S. Сразу видно, человек FIDO в глаза не видел.

Это не про меня, надеюсь!!!


 
Ich Hasse ©   (2002-09-15 21:35) [7]

Совершенно верно НИКОГДА не видел, поэтому приходится учиться


 
Ich Hasse ©   (2002-09-16 09:42) [8]

2 Mirovodin

Уважаемый дмитрия, может конечно мой вопрос прозвучит глупо, но пожалуйста примите во внимание то, что я пишу на Delphi всего 3 нет не года, месяца и мне сейчас позарез надо понять как вывести BMP на форму, поэтому мой вопрос состоит в следующем:

Что писать в функции CreateDIBitmap? вот это мне совершенно непонятно.

Есть такая функция как LoadBitMap, зачем она нужна
P.S. мне надо загрузить BMP из файла и вывести ее

Люди добрые не судите строго, я ведь только учусь


 
Ich Hasse ©   (2002-09-16 09:42) [9]

Спешил, потому много опечаток, не обижайтесь...


 
Mirovodin ©   (2002-09-16 10:50) [10]

Ну лови код загрузки 24 bit DIB-а, я уверен, что тебе будет не понятна каждая строчка, но уж это такой дело - WinAPI не для тех кто сел за Delphi 3 мес. назад....


procedure LoadBitmap24bit(const hWindow: THandle);
var
F : File;
BitmapFileHeader : TBITMAPFILEHEADER;
BitmapInfoHeader : TBITMAPINFOHEADER;
BitmapInfo : TBitMapInfo;
BitmapBits : Pointer;
ReadCount : DWORD;
DC : HDC;
begin
AssignFile(F, Bitmap24bitFileName);
Reset(F, 1);

BlockRead(F, BitmapFileHeader, SizeOf(TBitmapFileHeader), ReadCount);
if (ReadCount <> SizeOf(TBitmapFileHeader)) then
begin
MessageBox(hWnd, "Ошибка чтения BITMAPFILEHEADER", "DIB From File Sample", MB_OK+MB_ICONERROR);
CloseFile(F);
Exit;
end;

BlockRead(F, BitmapInfoHeader, SizeOf(TBitmapInfoHeader), ReadCount);
if (ReadCount <> SizeOf(TBitmapInfoHeader)) then
begin
MessageBox(hWnd, "Ошибка чтения TBITMAPINFOHEADER", "DIB From File Sample", MB_OK+MB_ICONERROR);
CloseFile(F);
Exit;
end;

GetMem(BitmapBits, BitmapInfoHeader.biSizeImage);

BlockRead(F, BitmapBits^, BitmapInfoHeader.biSizeImage, ReadCount);
if (ReadCount <> BitmapInfoHeader.biSizeImage) then
begin
MessageBox(hWnd, "Ошибка чтения данных файла.", "DIB From File Sample", MB_OK+MB_ICONERROR);
CloseFile(F);
Exit;
end;

BitmapInfo.bmiHeader:=BitmapInfoHeader;

DC:=GetDC(hWindow);
Bitmap:=CreateDIBitmap(DC,
BitmapInfoHeader,
CBM_INIT,
BitmapBits,
BitmapInfo,
DIB_RGB_COLORS);
ReleaseDC(hWindow, DC);

if Bitmap=0 then
MessageBox(hWnd, "Ошибка создания растра.", "DIB From File Sample", MB_OK+MB_ICONERROR);
CloseFile(F);
end;


 
Mirovodin ©   (2002-09-16 10:54) [11]

В дагонку, LoadBitmap как раз и загружает BMP из внешнего файла, т.е. в примере выше я сам создаю HBitmap, а так у тебя сразу получается указатель на HBitmap;




Страницы: 1 вся ветка

Текущий архив: 2003.01.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
3-1747
Valeron
2002-12-11 11:52
2003.01.02
Не сохраняются данные при использовании ODBC.


8-1839
Ich Hasse
2002-09-15 12:44
2003.01.02
BMP и API


1-1786
kingdom
2002-12-19 18:19
2003.01.02
Как послать письмо программно?


14-1912
Almaren
2002-12-14 14:35
2003.01.02
Как узнать содержание активной записи в БД?


6-1846
Weber
2002-11-06 04:10
2003.01.02
программа для админ. доступа к нету...