Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2017, 08:28   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Изменение размеров невидимой канвы

Здравствуйте.
Создаём невидимую канву:
Код:
  dc := CreateCompatibleDC(dc2);
  hbm := CreateCompatibleBitmap(dc2, 100, 100);
  SelectObject(dc,hbm);
потом меняем размер битмапа:
Код:
    SetBitmapDimensionEx(hbm, 200, 200, nil);
но не выходит. Размер области рисования остаётся равным [100,100].
Как изменить размер, не пересоздавая битмап?
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.04.2017, 08:48   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
потом меняем размер битмапа:
нет
Цитата:
The SetBitmapDimensionEx function assigns preferred dimensions to a bitmap. These dimensions can be used by applications; however, they are not used by the system.
Цитата:
Как изменить размер, не пересоздавая битмап?
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
p51x на форуме Ответить с цитированием
Старый 02.04.2017, 09:54   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
The SetBitmapDimensionEx function assigns preferred dimensions to a bitmap. These dimensions can be used by applications; however, they are not used by the system.
То есть, изменяется только информация о размере, а сам размер не меняется? Я правильно понял?
Цитата:
Сообщение от p51x Посмотреть сообщение
StretchBlt
Оно же копирует из одного DC в другой. Чем это отличается от пересоздания битмапа, кроме того что не потеряется нарисованное?
Код:
 StretchBlt(DC,0,0,NewWidth,NewHeight,DC,0,0,OldWidth,OldHeight, SRCCOPY);
не работает.
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.04.2017, 10:01   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

StretchBlt копирует из одного контекста в другой.
У вас в примере контекст один.
Насколько я понял, вам предлагают создать один битмап, известного размера, и потом рисовать его нужным размером.

Изменить битмап без пересоздания невозможно, да и не совсем понятно зачем это нужно.
waleri вне форума Ответить с цитированием
Старый 02.04.2017, 10:12   #5
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
У вас в примере контекст один.
ну я , собственно, об этом и спрашивал - как обойтись без второго.
Цитата:
Сообщение от waleri Посмотреть сообщение
Изменить битмап без пересоздания невозможно
Тогда в чем смысл функции SetBitmapDimensionEx? желательно на пальцах
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.04.2017, 10:20   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Именно в том и только в том, что написано в ее описании. В параметры битмапа занести информацию о предпочетаемых размерах и опциональный указатель для возврата старых размеров.
p51x на форуме Ответить с цитированием
Старый 02.04.2017, 10:42   #7
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
В параметры битмапа занести информацию о предпочетаемых размерах
если предпочитаемые размеры отличаются от реальных, то какой в этом смысл? Как это применимо на практике?
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.04.2017, 10:49   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Например, ваша функция может получить их и заскалить ее/создавать новые уже в новых размерах/...
p51x на форуме Ответить с цитированием
Старый 02.04.2017, 14:20   #9
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Например, ваша функция может получить их и заскалить ее/создавать новые уже в новых размерах/...
Почему нельзя хранить этот размер в глобальных переменных?
А DC которому принадлежал битмап, его тоже надо пересоздавать?
BLACK_RAIN вне форума Ответить с цитированием
Старый 02.04.2017, 14:36   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

DC размера не имеет.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размеров формы Lader C# (си шарп) 3 24.10.2011 14:01
Изменение размеров окна Liones Общие вопросы Delphi 4 15.10.2010 09:01
Изменение размеров фигуры по F1 inzener-tolik Win Api 4 24.03.2010 15:37
Изменение размеров цикла mchip Microsoft Office Excel 6 16.03.2009 13:21
Изменение размеров pinksky Microsoft Office Excel 3 18.04.2008 15:52