Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Масштабирование изображения, нужно вписать картинку в статик элемент 
V
    Опции темы
Rain789
  Дата 27.1.2011, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообщем есть код: 
Код

void CClickIHSDlg::OnFileOpen()
{
    CFileDialog File(TRUE);
    int iResult = File.DoModal();
    if(iResult == IDOK)
    {
        CImage img;
        img.Load(File.GetPathName());
        m_Image.SetBitmap((HBITMAP)img);

        UpdateData(FALSE);
    }
}


m_Image - CStatic (Picture Control).
размер статика 144х108.

если загружаемое изображение больше 144х108, нужно чтобы оно визуально масштабировалось под 144х108.
хотелось бы знать самый простой и быстрый способ реализации. мб есть какое то свойство?

Есть догадки что можно через StretchBlt() или BitBlt(), но как это реализовать?
И как я понимаю обе функции реализуют физическое сжатие картинки, а хотелось бы лишь визуальное.

Спасибо.
PM MAIL WWW ICQ Skype   Вверх
Earnest
Дата 28.1.2011, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(Rain789 @  27.1.2011,  22:36 Найти цитируемый пост)
И как я понимаю обе функции реализуют физическое сжатие картинки, а хотелось бы лишь визуальное.

Нет, StretchBlt сжимает только изображение, а не саму картинку, а BitBlt вообще ничего не сжимает.
Статик рисует картинку as is, подгоняя свой размер под размер картинки.
Чтобы масштабировать картинку, нужно делать свой контрол, можно и на основе OWNERDRAW-статика.
Тогда его не надо делать типа IMAGE, просто OWNERDRAW. 
При создании или инициализации статика нужно загрузить картинку, создать совместимый контекст и выбрать туда картинку.
В функции рисования OnDrawItem нужно выполнить StretchBlt из совместимого контекста в контекст рисования.
Это общая канва, конкретные примеры ищи в MSDN и в форуме.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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