Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сохранение большого изображения с контекста устройства в файл

34K
21 января 2008 года
Alexander Koretsky
3 / / 21.01.2008
Доброго времени суток!
Подскажите пожалуйста такую вещь. Есть функция, которая выводит в контекст устройства изображение. Нужно сохранить это изображение в файл BMP. Функция сохранения уже есть (пример из MSDN). Для малых изображений проблем не возникает, но размеры изображения могут быть больше размеров экрана (на форме рисуется только часть, возможна прокрутка). Как быть в таком случае? CreateCompatibleDC(GetDC(NULL)) не помогает, т. к. здесь действует ограничение на размер экрана. Может быть нужно как-то создать большой контекст, но с чем его совместимым делать? Или существуют какие-то другие способы решения проблемы? Буду очень благодарен за любую помощь.
5.1K
22 января 2008 года
12345678
93 / / 16.12.2006
Ну вообщем каким бы нибыло изображение и как бы не старалась функция вывода, выйти за пределы существующего контекста не выйдет - он не резиновый, точно так же и с сохранением. Я думаю что разумно будет создать большой контекст, выводить в него соответсвующее изображение и при необходимости копировать его часть в видимую область. А вообщем суть проблемы не совсем понятна.
34K
22 января 2008 года
Alexander Koretsky
3 / / 21.01.2008
Да, таким образом решение этой задачи сводится к созданию большого контекста. Но как его создать? Если пытаться CreateCompatibleDC(GetDC(NULL)), накладывается ограничение на размер контекста (текущее разрешение экрана).
Т.е. подскажите пожалуйста, как создать контекст размером к примеру 5000 на 5000 пикселей?
5.1K
23 января 2008 года
12345678
93 / / 16.12.2006
Ну например так:
Код:
CDC dd ?
        Cbmp dd ?

        invoke CreateCompatibleDC,0
        mov [CDC],eax
        invoke CreateBitmap, 5000, 5000, 1, 32, 0
        mov [Cbmp],eax
        invoke SelectObject, [CDC], [Cbmp]
        invoke DeleteObject,eax
        invoke DeleteObject,[Cbmp]
        mov eax,[CDC] ;в eax будет созданный DC
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог