Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
14-82967
Nico1a
2002-11-04 23:20
2002.11.25
Г люки (D6 WinXP)


1-82784
Крот
2002-11-13 09:26
2002.11.25
Тайна синего экрана


1-82854
Jeka.
2002-11-14 13:54
2002.11.25
Scroll


14-82983
Igorek
2002-11-06 14:52
2002.11.25
Комната в Киеве на Теремках


6-82892
HelpMy
2002-09-17 07:11
2002.11.25
Как программно открыть/закрыть доступ к диску (папке)?





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