Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Doomych
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 98
#1

Проблема с масштабированием BMP - C++

31.01.2008, 08:26. Просмотров 942. Ответов 2
Метки нет (Все метки)

Проблема в следующем: вывожу в клиентское окно BMP-картинку (Truecolor, 24 bit, размер - 1024х960), которую читаю с диска. При этом картинка масштабируется:
C++
1
2
3
4
5
6
void CXxxView::OnDraw(CDC* pDC)
{
    ...
    pDC->StretchBlt(250, 20, 1024 / 2, 960 / 2, & dcTemp, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
    ...
}
Происходит следующее: если картинка выводится в масштабе, близком к 1:1, все OK. Но при заметном ее уменьшении качество изображения ухудшается. При масштабе 1:2 это уже явно не Truecolor, а цветов так восемь, причем изображение темнеет. Дальше - хуже: 1:16 - почти одна чернота.
Объясните, в чем причина и как с этим бороться!

Спасибо всем, кто ответит!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2008, 08:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с масштабированием BMP (C++):

Работа с BMP-файлами (класс "8 битное BMP изображение) - C++
Написать класс "8 битное BMP изображение".Класс должен содержать 3 конструктора: конструктор по умолчанию, конструктор с параметрами и...

bmp в C++ - C++
Помогите пожалуйста написать программу на C++ которая уменьшает разрешение bmp картинки в 2 раза. Можно использовать только библиотеку ...

bmp 8 - C++
Помогите пожалуйста, нужно реализовать алгоритм Линде-Бузо-Грея для BMP файла. Проблема появляется при записи файла в формат bmp 8 -...

Отразить bmp - C++
Здравствуйте, подскажите, как можно отразить bmp по вертикали или горизонтали? На WinAPI. Желательно код. Спасибо.

Открытие .bmp - C++
Как открыть .bmp в VS 2012?

BMP - файл - C++
Доброго времени суток ! Друзья, где можно почитать про BMP файлы, посмотреть примеры (код) ? Интересует: как изменить яркость. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
31.01.2008, 15:31 #2
Я думаю проблема в алгоритме масштабирования, а точнее его отсутствии, простейшая процедура масштабирования не предполагала работу с высококачественными фотографиями.... и, мне кажеться, просто выбирает каждую 16-ю точку картинки для масштабирования 1/16, что коне чтно же никак не подходит.
Советую поискать подходящий алгоритм и воспользоваться им перед выводом картинки на экран, который бы находил среднее значение цвета на протяжении 16 точек и брал среднее значение, также зависящее от окруджающих регионов.

Удачи, Владимир
0
Doomych
0 / 0 / 0
Регистрация: 10.12.2007
Сообщений: 98
03.02.2008, 10:10  [ТС] #3
На выходных во всем разобрался: все оказалось проще: ранее, в строке
C++
1
HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), m_sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
все портил стиль LR_CREATEDIBSECTION.

Но все равно, спасибо за помощь!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2008, 10:10
Привет! Вот еще темы с ответами:

Считывание bmp - C++
Здравствуйте, мне надо считать изображение, содержащая только 2х цветную палитру, и просканировать картинку на наличие черных пикселей,...

bmp (24 битный) - C++
Ребят всем привет я бы выложил тут код,ну на самом деле с моей точки зрения это не к чему.Встала задача открыть 24 битный bmp файл и...

[C++] 24-битные BMP - C++
Программа не хочет кодировать 24-битные BMP. Под кодированием я понимаю разбитие изображение на квадраты по 10 пикселей (в программе - по...

Wav в bmp - C++
Подскажите, пожалуйста, как разложить побитово wav-file и сложить его в bmp? Можно примеры кода?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru