Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизКак отобразить картинку на форме... Найти похожие ветки
← →
MSAlex (2002-10-10 20:08) [0]Как отобразить картинку на форме если есть только HBITMAP,
тоесть только указатель. Используя только модули Windows и Messages.
BitBlt непомагает таккакнажен hdc а у меня HBITMAP.
SelectObject(hdc,hbitmap) тоже ничего не даёт.
Чё делать?
← →
Ate (2002-10-10 21:57) [1]Судя по вопросу не на ФОРМЕ а на ОКНЕ.
Дык сделай себе ДС:=GetDC(хэндл окна),
Нарисуй
И не забудь его положить на место: ReleaseDC(хэндл окна, ДС)
А вообще - читай SDK, там СТОЛЬКО интересного!
← →
Suntechnic (2002-10-10 22:51) [2]Если только отобразить и не организовывать её пермещение(в смысле отрисовки какого-нибудь скачащего мячика), то проще всего для этих целей создать окно с именем класса "static" и стилем SS_BITMAP.
← →
Evgeny (2002-10-11 05:27) [3]Нет конечно это очень хорошая идея сначала искать, а потом спрашивать. Жаль что не все это любят делать. Им бы на халяву - готовенькое. А то ведь мозги напрягать нет желания.
← →
k (2002-10-11 14:10) [4]ровно неделю назад в этом форуме был такой же вопрос
var MemDC,WinDC:HDC;
OldHandle:HBITMAP;//старый Handle
WinDC := GetDC(Handle{окна});
MemDC := GetCompatibleDC(0);
OldHandle := SelectObject(MemDC, BMP);
BitBlt(WinDC, x, y, Width, Height, MemDC, 0,0,SRCCOPY);
SelectObject(MemDC,OldHandle);// наверное можно и без этого, но хуже не будет
ReleaseDC(Handle{окна}, WinDC);
DeleteDC(Memdc);
← →
MSAlex (2002-10-11 17:20) [5]k > Thanks...
Evgeny > точнее нет времени, темболее я ленивый
← →
msalex (2002-10-11 21:35) [6]k> но картинка всё ещё не выводится.
var
Handle: HWND; //окна
Bitmap1: HBITMAP;
BitmapDC: HDC;
...
BitMap1:=LoadBitmap(hInst,"Bitmap1");
BitmapDC:=CreateCompatibleDC(GetDC(Handle));
Bitmap1 := SelectObject(BitmapDC, Bitmap1);
...
WM_Paint:
begin
BitBlt(GetDC(Handle),10,30,40,20,BitmapDC,0,0,SRCCopy);
ReleaseDC(Handle,GetDC(Handle));
end;
...
Чё делать?
← →
Evgeny (2002-10-12 07:30) [7]msalex
> точнее нет времени, темболее я ленивый
Ну зачем тогда приведенный пример искажать? Ведь он был рабочий.
var
DC : HDC;
ps : TPaintStruct;
hdcCompat : HDC;
// Эти переменные локальные
BMP1 : HBITMAP;
// А эту переменную лучше сделать глобальной,
тогда Bitmap можно загрузить один раз на
стадии создания окна
WM_PAINT:
begin
DC := BeginPaint(Wnd, ps);
BMP1 := LoadBitmap(hInst, "Bitmap1");
hdcCompat := CreateCompatibleDC(DC);
SelectObject(hdcCompat, BMP1);
BitBlt(DC, 10, 30, 40, 20, hdcCompat, 0, 0, SRCCopy);
DeleteDC(hdcCompat);
EndPaint(Wnd, ps);
end;
Это будет работать.
BitmapDC:=CreateCompatibleDC( GetDC(Handle));
ReleaseDC(Handle, GetDC(Handle));
А в этих строчках ошибка. Получаемый и освобождаемый контекст разные.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c