Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SetDIBits не срабатывает 
V
    Опции темы
deniska
Дата 1.9.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Хотя не исключено, что у него просто косяки в коде smile 

 smile 
Может, может. Сейчас вот сижу капаюсь.
BitBlt я пробовал. С него собственно и начал.
Функции возвращают 0 при увеличении картинки где-то с 500*500
У меня в окне есть область которая заполняется фоном с градиентом. Эту область я мышой могу ресайзить. Пока размер области небольшой, все вроде работает
PM MAIL ICQ   Вверх
GremlinProg
Дата 1.9.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



Цитата(Earnest @  1.9.2006,  12:52 Найти цитируемый пост)
OLE никому не порекомендую - уж там-то издержки...

Конечно, не все OLE-компоненты универсальны и удобны, но не нужно судить так обо всех интерфейсах , я тоже сталкивался с некоторыми излишествами в OLE, но мы сейчас говорим конкретно об одном:
Цитата(MSDN)

IPicture Methods:
get_Handle Returns the Windows GDI handle of the picture managed within this picture object. 
get_hPal Returns a copy of the palette currently used by the picture object. 
get_Type Returns the current type of the picture. 
get_Width Returns the current width of the picture in the picture object. 
get_Height Returns the current height of the picture in the picture object. 
Render Draws the specified portion of the picture onto the specified device context, positioned at the specified location. 
set_hPal Sets the current palette of the picture. 
get_CurDC Returns the current device context into which this picture is selected. 
SelectPicture Selects a bitmap picture into a given device context, returning the device context in which the picture was previously selected as well as the picture's GDI handle. 
get_KeepOriginalFormat Returns the current value of the picture object's KeepOriginalFormat property. 
put_KeepOriginalFormat Sets the picture object's KeepOriginalFormat property. 
PictureChanged Notifies the picture object that its picture resource changed. 
SaveAsFile Saves the picture's data into a stream in the same format that it would save itself into a file. 
get_Attributes Returns the current set of the picture's bit attributes. 

Здесь get_Handle возвращает HBITMAP, с которым можно работать как обычно, а метод Render делает очень полезную вещь: рендерит в указанный девайс любой кусок HBITMAP, с нужным масштабом, причем метод рендеринга выбирается тот, который поддерживается системой: если это битмап, то происходит нечто похожее на StretchDIBits, если упакованный жипех, то его собственный рендеринг. Т.е. Render избавляет нас от лишней мороки, да и о качестве говорить не приходится. Остальные методы, роли не играют, они просто дублируют соответствующие вызовы API, так что нагрузки особой на ресурсы не несут.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Earnest
Дата 1.9.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(deniska @  1.9.2006,  12:01 Найти цитируемый пост)
BitBlt я пробовал. С него собственно и начал.
Функции возвращают 0 при увеличении картинки где-то с 500*500

Так может у тебя с преобразованием координат какая-то ерунда?
Там же есть ограничения... Или еще что-то в этом роде...

Покажи кусок кода.

Добавлено @ 12:12 
Я думаю, что в этом случае ни IPicture, ни CImage тебя не спасут... нужно разобраться с координатами


--------------------
...
PM   Вверх
deniska
Дата 1.9.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Так может у тебя с преобразованием координат какая-то ерунда?

Я думаю не должно так как при небольших то размерах работает нормально а координаты считаются одинаково для любого размера.
Мне этими функциями приходилось пользоваться так как градиент я ручками делал (массив заполнял).
потом этот массив надо было в dc записывать.
Сейчас попробовал FillGradient. Сижу и наслаждаюсь: в 3 раза быстрее, никаких глюков с прорисовкой,
про память под массив париться не нужно. В общем пока одни достоинства.
Спасибо Earnest и GremlinProg что пытались помочь
P.S. Все равно странно почему же глюковало? Надо руки выпрямлять наверно....
PM MAIL ICQ   Вверх
Earnest
Дата 1.9.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(deniska @  1.9.2006,  13:51 Найти цитируемый пост)
Я думаю не должно так как при небольших то размерах работает нормально а координаты считаются одинаково для любого размера

Существуют ограничения



--------------------
...
PM   Вверх
GremlinProg
Дата 1.9.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



Цитата(Earnest @  1.9.2006,  14:10 Найти цитируемый пост)
Я думаю, что в этом случае ни IPicture, ни CImage тебя не спасут

однако же IPicture как раз и спасло, я уже говорил )
Цитата(deniska @  1.9.2006,  14:51 Найти цитируемый пост)
так как градиент я ручками делал (массив заполнял).

Лучше всего сразу о таких вещах сообщать, т.е. говорить не так, мол не работает функция, а сразу пояснять задачу и цели, тогда тебя будет проще понять. Действительно, специализированные функции, такие как AlphaBlend, BitBlt, StretchBlt, FillGradient и т.п. как правило работают намного быстрее, нежели их пытаться реализовать, пусть даже через прямой доступ. Прямой доступ к растру лучше использовать только когда необходимо применить к нему какой-то собственный алгоритм, который не имеет аналогов в API, либо когда нужен попиксельный анализ растра.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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