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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2012, 13:50   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию проблемы с TransparentStretchBlt

В общем мне нужно масштабировать изображение.
Есть, допустим, картинка 800х600, надо ее нарисовать в прямоугольник 150х100.
(ну или в 123х321 - не суть важно, т.е. не в 2/4/8 раз изменяется размер)

я сначала очень рассчитывал на Canvas.CopyRect, но он рисует с косяками -
общие контуры остаются, но цвета перевираются жутко.

попробовал использовать TImage.
Залил в него картинку, Stretch:=true и меняю размер компонента.
Растягивается все красиво при этом, без глюков.
Поковырялся в TImage, чтобы посмотреть как он это делает.
Пришел к выводу, что он использует TransparentStretchBlt (модуль Graphics).

В эту процедуру передается HDC одного канваса и его координаты, и аналогично - второго канваса,
ну и там еще HDC маски, но TImage ее нулями передает.

Я воспользовался сам этой процедурой, указал канвас битмапа и формы (битмап рисуется на форму).
Нарисовался опять с косяками - аналогичные Canvas.CopyRect (скорее всего он эту же процедуру использует).

Кто-нибудь знает в чем проблема?
что нужно сделать, чтобы нормально картинку растянуть?
xrob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с while cashmail JavaScript, Ajax 4 29.06.2012 21:08
проблемы с IE Tradua HTML и CSS 1 05.08.2011 06:54
Проблемы с БД Verwolf C/C++ Базы данных 2 22.05.2011 09:52
проблемы с if Vergil Общие вопросы C/C++ 8 21.04.2010 21:43
проблемы с IE xakzona Помощь студентам 1 16.12.2008 21:53