![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрука и отображение bitmap
Sinus © (2006-08-14 18:43:00)Привет всем
необходимо загрузить битмап из ресурса ( я использовал LoadBitmap) и нарисовать (отобразить его на форме).
Форма написана на АПИ и Санвас -а у нее нет.
если можно общий ход решения и функции для реализации,
и вопрос в тему... как вообще отображать рисунки на кнопках и едитах. про то что используется DC я уже сам сообразил..
DVM (2006-11-05 10:35:00) [1]
> Знаю я, что они рулез, вот только по программированию (именно
> программированию) в Win32 что-то книг особо не видно.
www.natahaus.ru
Ketmar (2006-11-04 23:15:00) [2]>[11] jTommy 3-Nov-2006, 17:52
>Знаю я, что они рулез, вот только по программированию (
>именно программированию) в Win32 что-то книг особо не
>видно. Может я давно в книжном не появлялся? :)
интернет крысы съели?
jTommy (2006-11-03 17:52:00) [3]
> Ketmar © (03.11.06 01:39) [5]
> книжки, барин, -- они рулёз.
Знаю я, что они рулез, вот только по программированию (именно программированию) в Win32 что-то книг особо не видно. Может я давно в книжном не появлялся? :)
P.S.: Свою проблему решил через SS_OWNERDRAW и WM_DRAWITEM.
Ketmar (2006-11-03 10:56:00) [4]>[9] DVM(c) 3-Nov-2006, 10:53
>BitBlt не работает с битмапами, она работает с DC - отсюда
>все телодвижения.
а, блин! извиняюсь. спать надо больше. протупил я что-то.
DVM (2006-11-03 10:53:00) [5]
> все, кроме BitBlt()
BitBlt не работает с битмапами, она работает с DC - отсюда все телодвижения.
Ketmar (2006-11-03 10:44:00) [6]>[7] DVM(c) 3-Nov-2006, 10:02
>А какие телодвижения вызывают вопрос?
все, кроме BitBlt(). %-)
DVM (2006-11-03 10:02:00) [7]
> а зачем столько лишних телодвижений?
Так у Петзольда написано. И у Юаня похоже. А какие телодвижения вызывают вопрос?
@!!!ex (2006-11-03 08:51:00) [8]Удалено модератором
Примечание: Нарушаешь
Ketmar (2006-11-03 01:39:00) [9]>[3] jTommy 3-Nov-2006, 00:30
а какого ангела его должно быть видно? не пробовал о обработчике событий рисовать, а?
книжки, барин, -- они рулёз.
Ketmar (2006-11-03 01:38:00) [10]>[2] DVM(c) 14-Aug-2006, 23:12
а зачем столько лишних телодвижений?
jTommy (2006-11-03 00:30:00) [11]Хотелось бы уточнить, подпрограмма DrawBitmap предназначена только для рисования в окне приложения или в элементах управления тоже должна работать?
Элемент управления создаю во время выполнения:
[code]
imBanner:=CreateWindowEx(0, 'STATIC', '', WS_VISIBLE or WS_CHILD or SS_BITMAP, 0, 0, 400, 64, MainWnd, id_imBanner, hInstance, nil);
// Получаю контекст, результат не 0
bDC:=GetDC(imBanner);
// Загружаю растр, результат тоже не 0
hbmp:=LoadBitmap(hInstance, 'BANNER1');
// Внутри подпрограммы тоже никаких ошибок не возникает
DrawBitmap(bDC, hbmp, 0, 0);
[/code]
В результате изображения не видно :(.
DVM (2006-08-14 23:12:00) [12]
> необходимо загрузить битмап из ресурса ( я использовал LoadBitmap)
Раз использовал, значит загрузил. HBITMAP получил?
DC окна, я полагаю, тоже имеется?
тогда как то так:
procedure DrawBitmap(dc: HDC; hBitmap: HBITMAP; xStart, yStart: integer); stdcall;
var
bm: BITMAP;
hdcMem: HDC;
ptSize, ptOrg: TPoint;
begin
if dc <> 0 then
begin
hdcMem := CreateCompatibleDC(dc);
if (hdcMem <> 0) and (hBitmap <> 0) then
begin
SelectObject(hdcMem, hBitmap);
SetMapMode(hdcMem, GetMapMode(dc));
GetObject(hBitmap, sizeof(BITMAP), @bm);
ptSize.x := bm.bmWidth;
ptSize.y := bm.bmHeight;
DPtoLP(dc, ptSize, 1);
ptOrg.x := 0;
ptOrg.y := 0;
DPtoLP(hdcMem, ptOrg, 1);
BitBlt(dc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, ptOrg.x, ptOrg.y, SRCCOPY);
DeleteDC(hdcMem);
end;
end;
end;
P.S Нет в WinAPI никаких форм. Форма - это понятие Delphi
Leonid Troyanovsky (2006-08-14 21:37:00) [13]
> Sinus © (14.08.06 18:43)
> необходимо загрузить битмап из ресурса ( я использовал LoadBitmap)
> и нарисовать (отобразить его на форме).
> Форма написана на АПИ и Санвас -а у нее нет.
Во-первых, формы написанные на АПИ, есть тоже, что формы VCL.
Бо, ничего более (объектной оболочки) и представить сложно.
Если это, конечно, формы, а не, скажем, окна.
Во-вторых, ресурсы бывают разные.
Скажем, в exe. Или в длл.
--
Regards, LVT.