Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как зная HBITMAP отобразить BITMAP на экране? С помощью API 
:(
    Опции темы
quard
Дата 14.3.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Че-то не нашел я этого... smile
PM MAIL   Вверх
Snowy
Дата 14.3.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Думаю не слишком перемудрил. Вот такое решение нарисовал:
Код

var
  h: HBITMAP;
  DC0, DC: HDC;
  B: tagBitmap;
begin
  h := LoadBitmap(...); // Получаем наш HBITMAP через LoadBitmap или т.п.
  // далее нужно его нарисовать:
  GetObject(h, sizeof(B), @B);
  DC0 := GetDC(0); // берем DC рабочего стола, чтобы создать наш DC
  DC := CreateCompatibleDC(DC0); // Создаем DC для рисования
  ReleaseDC(0, DC0); // освобождаем DC0
  SelectObject(DC, h); // назначаем ему наш HBITMAP
  // А имея DC нарисовать не проблема: например на форме:
  BitBlt(Form1.Canvas.Handle, 0, 0, b.bmWidth, b.bmHeight, DC, 0, 0, SRCCOPY);
  DeleteDC(DC); // уничтожаем DC
end;

PM MAIL   Вверх
maxim1000
Дата 15.3.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



Цитата(Snowy @ 14.3.2006, 22:21 Найти цитируемый пост)
DC := CreateCompatibleDC(GetDC(0)); // Создаем DC для рисования

наверное, имелось в виду CreateCompatibleDC(DC0)?
а то иначе непонятно, зачем DC0...

да и вообще, почему бы не сделать его совместимым с Form1.Canvas.Handle?


--------------------
qqq
PM WWW   Вверх
Snowy
Дата 15.3.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(maxim1000 @ 15.3.2006, 00:36 Найти цитируемый пост)
наверное, имелось в виду CreateCompatibleDC(DC0)?
Ну да. Опечатался.

Цитата(maxim1000 @ 15.3.2006, 00:36 Найти цитируемый пост)
да и вообще, почему бы не сделать его совместимым с Form1.Canvas.Handle?
Просто - универсальное решение, не зависяшее от наличия формы или чего-либо.
Добавлено @ 10:58
Исправил в посте CreateCompatibleDC(GetDC(0)); на CreateCompatibleDC(DC0);
PM MAIL   Вверх
maxim1000
Дата 15.3.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



Цитата(Snowy @ 15.3.2006, 09:57 Найти цитируемый пост)
Просто - универсальное решение, не зависяшее от наличия формы или чего-либо

ну выводить-то bitmap куда-то надо - этим функция занимается
значит, есть DC в который выводить...


--------------------
qqq
PM WWW   Вверх
Snowy
Дата 15.3.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(maxim1000 @ 15.3.2006, 11:51 Найти цитируемый пост)
ну выводить-то bitmap куда-то надо - этим функция занимаетсязначит, есть DC в который выводить...
Ну если это оформить функцией, то вполне логично.
Тут я привел общую шапку. А дальнейшее использование - как пример.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0773 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.