Главная страница
    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.007 c
1-82757
vitnt
2002-11-15 13:15
2002.11.25
StrToDateTime


4-83065
sascha
2002-10-14 17:53
2002.11.25
Форма в dll для новичка.


3-82622
mas_alexey
2002-11-05 15:58
2002.11.25
SQL


3-82664
Leonon
2002-11-06 12:04
2002.11.25
Не отображаются изменения в гриде!?


3-82662
karan
2002-11-04 14:42
2002.11.25
Kilix+IB6 =>





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