Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите как грамотно увеличить размер Битмапа?  (Прочитано 8063 раз)
0 Пользователей и 1 Гость смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 22-11-2004 10:47 » 

Люди Подскажите как грамотно увеличить размер Битмапа?

У меня есть HBITMAP мне нужно увеличить BMP на которую он ссылается как это сделать грамотнее всего?
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #1 : 24-11-2004 04:04 » 

Что никто не знает чтоли?
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 24-11-2004 04:04 » 

Я если знаю то всегда отвечаю Жаль
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #3 : 24-11-2004 05:38 » 

HDC hCompatibleDC=CreateCompatibleDC(DCHandle);//Создаем совместимый DC
     HDC hSourceDC=CreateCompatibleDC(hCompatibleDC);//Создаем исходный DC
       HANDLE hOldBitmap=SelectObject(hSourceDC,hBmp);//Загружаем в него нашу BMPшку
        StretchBlt(hCompatibleDC,0,0,ZoomSize.x,ZoomSize.y,hSourceDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY);//Копируем и увеличиваем
         SelectObject(hSourceDC,hOldBitmap);
        hBmp=(HBITMAP)SelectObject(hCompatibleDC,hBmp);//Наш битмап
         DeleteObject(hCompatibleDC);
          DeleteObject(hSourceDC);
           ::GetObject(hBmp, sizeof(BITMAP), &Bitmap);//Получаем битмап опять
Сделал так но нифига не работает потому что GetObject возвращает херню размером 1X1
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Серж
Гость
« Ответ #4 : 24-11-2004 08:39 » 

USBLexus, по-моему, в твоем тексте отсутствует
 CreateBitmap для битмапа назначения, ведь его нужно создать нужного размера, затем привязать к CompatibleDC. а потом выполнять StrechBlt.
Записан
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #5 : 24-11-2004 08:46 » new

Цитата: Серж
USBLexus, по-моему, в твоем тексте отсутствует
 CreateBitmap для битмапа назначения, ведь его нужно создать нужного размера, затем привязать к CompatibleDC. а потом выполнять StrechBlt.

Да ты прав, я уже разобрался Спасибо за помощь Вот код может кому пригодится или кто предложит как его можно оптимизировать буду рад

     HDC hCompatibleDC=CreateCompatibleDC(ScreenDC);//Создаем совместимый DC
     HDC hSourceDC=CreateCompatibleDC(ScreenDC);//Создаем исходный DC для исходной BMP
      HBITMAP hbmp1=CreateCompatibleBitmap(ScreenDC,ZoomSize.x,ZoomSize.y);//Совместимому DC совместимый битмап
       HANDLE hOldBitmap1=SelectObject(hCompatibleDC,hbmp1);//Присоединяем совместимый битмап
         HANDLE hOldBitmap=SelectObject(hSourceDC,hBmp);//Загружаем исходный битмап
          StretchBlt(hCompatibleDC,0,0,ZoomSize.x,ZoomSize.y,hSourceDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY);//Увеличиваем
           SelectObject(hSourceDC,hOldBitmap);//Освобождаем исходный битмап
            hBmp=(HBITMAP)SelectObject(hCompatibleDC,hOldBitmap1);//Получаем увеличеный битмап
             DeleteObject(hCompatibleDC);//Удаляем совместимый DC
            DeleteObject(hSourceDC);//Удаляем исходный DC
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines