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

Вниз

Работа с битмапами   Найти похожие ветки 

 
den   (2003-05-18 12:51) [0]

Здравствуйте.
Подскажите пож., как при помощи только лишь функций API можно вывести растр из файла на канву формы.


 
e!dGe.   (2003-05-18 13:03) [1]

Прямо так - растр из файла - никак.


 
Dmk   (2003-05-18 14:27) [2]

Сначала надо создать Bitmap
CreateDIBSection()
CreateBitmap()
и т.д.
Потом считать файл или часть файла в
память этого Bitmap"а.
Ну и наконец с помощью BitBlt или SetDIBits
вывести на контекст формы.


 
Ich Hasse   (2003-05-18 18:13) [3]

function LoadBMP(const hWindow: THandle; FileName : String):HBitMap;
var
F : File;
BitmapFileHeader : TBITMAPFILEHEADER;
BitmapInfoHeader : TBITMAPINFOHEADER;
BitmapInfo : TBitMapInfo;
BitmapBits : Pointer;
ReadCount : DWORD;
DC : HDC;
begin
AssignFile(F, FileName);
Reset(F, 1);

BlockRead(F, BitmapFileHeader, SizeOf(TBitmapFileHeader), ReadCount);

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

BlockRead(F, BitmapInfoHeader, SizeOf(TBitmapInfoHeader), ReadCount);

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

GetMem(BitmapBits, BitmapInfoHeader.biSizeImage);

BlockRead(F, BitmapBits^, BitmapInfoHeader.biSizeImage, ReadCount);

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

BitmapInfo.bmiHeader:=BitmapInfoHeader;

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

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


Вот таким образом ты грузишь *.bmp файл в HBitMap.
Далле выводишь с помощью BitBlt какого-нибудь...


 
Morfein   (2003-05-18 22:00) [4]

А зачем так извращаться, если вывод предполагается на Canvas формы? С помощью её же методов и грузи.


 
e!dGe.   (2003-05-18 22:23) [5]


> Morfein © (18.05.03 22:00)

Однако..)


 
Ich Hasse   (2003-05-18 22:42) [6]

2 Morfein
Мне кажется или это и в правду форум WinAPI?
Если это так, то я ответил на вопрос с точки зрения API и никаких извращений


 
Mischka   (2003-05-19 06:50) [7]

А мне вот так насоветовали. Работает замечательно!
Ну, конечно, без проверки корректности .bmp-файла :)

Window: HWND;

WindowFace:=loadImage(0, PANSIChar("MainForm.bmp"), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);

procedure drawFace();
var
bm: BITMAP;
hob: HBITMAP;
rc: TRect;
DC, bDC: HDC;
begin
getObject(WindowFace, sizeOf(BITMAP), LPSTR(@bm));
getClientRect(Window, rc);
DC:=getDC(Window);
bDC:=createCompatibleDC(DC);
hob:=HBITMAP(selectObject(bDC, WindowFace));
BitBlt(DC, rc.Left, rc.Top, bm.bmWidth, bm.bmHeight, bDC, 0, 0, SRCCOPY);
selectObject(bDC, hob);
deleteDC(bDC)
end;



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

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

Наверх




Память: 0.46 MB
Время: 0.007 c
14-67988
Balkon
2003-07-03 11:05
2003.07.21
Вопрос по локализации приложений...


14-67980
Карелин Артем
2003-07-07 11:48
2003.07.21
Буржуйский форум по дельфи. ХОРОШИЙ.


1-67758
Гость
2003-07-08 19:46
2003.07.21
RTF то HTML


14-67961
J_S
2003-07-02 19:03
2003.07.21
Создание комонентов в Run-Time


1-67796
Николай В.
2003-07-08 11:08
2003.07.21
MessageBox





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