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

Вниз

Как отобразить картинку на форме...   Найти похожие ветки 

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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
14-82932
Dush
2002-11-05 16:14
2002.11.25
Экстрим програминг!


14-82920
Николай Быков
2002-11-04 18:32
2002.11.25
А вот теперь держите ответ передо мной:


14-82968
Undert
2002-11-04 21:01
2002.11.25
Ну дык, дезигнеры и бета-тестеры!


14-82989
Карлсон
2002-11-03 02:11
2002.11.25
звуки


4-83079
Reals
2002-10-15 18:31
2002.11.25
Как из реестра прочитать стринговое значение...