| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > масштабирование CImage |
| Автор: Leopard25 3.7.2004, 17:10 |
| В m_jpgImage загружаю изображение и вывожу его на экран в OnDraw. Если вывожу 1:1 всё нормально , а если меняю размеры оно искажается. CImage m_jpgImage; // меняю размеры int Height = 300; int cor = (m_jpgImage.GetHeight()*100)/(Height); int Weight = (int)((m_jpgImage.GetWidth()*100)/cor); m_jpgImage.Draw(pDC->m_hDC,550,50,Weight,Height); Я что-то нетак делаю ? |
| Автор: chipset 3.7.2004, 21:35 | ||
Кстати... CImage у меня обьявлен в главном модуле так что здесь его не видно... |
| Автор: chipset 3.7.2004, 21:46 |
| А суть в том что я не пользуюсь .Draw а получаю хэндел CImage'а и из него уже копирую обычным средствами.. |
| Автор: Leopard25 4.7.2004, 09:45 |
| Теперь первая картинка показывается нормально , а при переключении на другую происходит ошибка : Debug Assertion Failed! .................. ..................altimage.h Line: 574 Expression m_hDC==0 загружаю картинку: m_jpgImage.Destroy(); m_jpgImage.Load(m_strPathPict); void CPicBackGroundView::OnDraw(CDC* pDC) { // вывод изображения SetStretchBltMode(pDC->GetSafeHdc(),HALFTONE); StretchBlt (pDC->GetSafeHdc(), //Dc 550,50,200 ,200,//Масштабирование m_jpgImage.GetDC(),//Source 0,0,m_jpgImage.GetWidth(),m_jpgImage.GetHeight() ,SRCCOPY);//Установка параметра копирования } |
| Автор: chipset 4.7.2004, 09:50 |
| Это пока лечу только release модом.. |
| Автор: Leopard25 4.7.2004, 12:19 |
| Я разобрался . Так работает : int Height = 300; int cor = (m_jpgImage.GetHeight()*100)/(Height); int Weight = (int)((m_jpgImage.GetWidth()*100)/cor); CDC dcMem2; dcMem2.CreateCompatibleDC(pDC); CBitmap bmp; bmp.CreateCompatibleBitmap(pDC,m_jpgImage.GetWidth(),m_jpgImage.GetHeight()); dcMem2.SelectObject(&bmp); dcMem2.PatBlt(0,0,m_jpgImage.GetWidth(),m_jpgImage.GetHeight(),WHITENESS); m_jpgImage.BitBlt(dcMem2,0,0,m_jpgImage.GetWidth(),m_jpgImage.GetHeight() ,0,0,SRCCOPY); SetStretchBltMode(pDC->GetSafeHdc(),HALFTONE);//Установка "масштабирования StretchBlt (pDC->GetSafeHdc(), //Dc 550,50, Weight,Height,//Масштабирование dcMem2.m_hDC,//Source 0,0,m_jpgImage.GetWidth(),m_jpgImage.GetHeight()//Получение исх //одного изображения ,SRCCOPY);//Установка параметра копирования dcMem2.PatBlt(0,0,m_jpgImage.GetWidth(),m_jpgImage.GetHeight(),WHITENESS); |