Главная страница
    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.005 c
1-1807
laser
2002-12-20 17:03
2003.01.02
Пацаны ПОМОГИТЕ


3-1760
Eduard
2002-12-11 15:23
2003.01.02
Проблема MSAccess и BDE


1-1831
delpher_gray
2002-12-15 12:31
2003.01.02
Hook и ! Как отловить русские буквы ?


1-1782
MasterA
2002-12-20 11:48
2003.01.02
Как из строки получить функцию


1-1783
KME
2002-12-20 12:09
2003.01.02
Рисование в TIMAGE





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