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

Вниз

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

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

Наверх





Память: 0.47 MB
Время: 0.004 c
4-1926
alex134
2002-11-16 17:55
2003.01.02
хук на окно


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


1-1804
d_oleg
2002-12-20 13:31
2003.01.02
название языка текущей раскладки клавиатуры


1-1800
Olesia_K
2002-12-20 15:06
2003.01.02
Документация на русском по TreeView


14-1898
adur
2002-12-13 20:10
2003.01.02
DLL





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