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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2012, 21:12   #1
DeGroup
 
Регистрация: 13.09.2011
Сообщений: 8
По умолчанию Нарисовать полупрозрачный прямоугольник на Bitmap или Image

Привет всем.
Встала проблемка - надо на картинке нарисовать полупрозрачный прямоугольник.
Canvas->FillRect да рисует, но хотелось бы полупрозрачный прямоугольник получить.
Думаю надо копать в сторону

BOOL AlphaBlend(HDC hdcDesk, int nXOriginDest,int nYOriginDesk,

int nWidthDest, int nHeightDest,
HDC hdcSrc, int nXOriginSrc int nYOriginSrc,
int nWidthSrc, int nHeightSrc,
BLENDFUNCTION blendFDunction);

но только пока не понял как. Если кто занимался, киньте примерчик плиз.
DeGroup вне форума Ответить с цитированием
Старый 24.04.2012, 15:41   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

А может создать форму, там есть AlphaBlend и AlphaBlendValue, BorderStyle = bsNone и наложить. Правда ее придется таскать за собой, при перемещении основной формы. Это как вариант программирования в лоб.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 30.04.2012, 11:43   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Вот формула смешения цветов.
displayColor = sourceColor*alpha / 255 + backgroundColor*(255 – alpha) / 255
А далее функция, возможно что для С++ ее придется оптимизировать по типам данных.
Код:
public Color colorMixer(byte transpar, Color c1, Color c2)
        {              
            int _r = c1.R * transpar / 255 + c2.R * (255 - transpar) / 255;
            int _g = c1.G * transpar / 255 + c2.G * (255 - transpar) / 255;
            int _b = c1.B * transpar / 255 + c2.B * (255 - transpar) / 255;

            return Color.FromArgb((byte)(_r), (byte)(_g), (byte)(_b));
        }
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полупрозрачный image postal2 Мультимедиа в Delphi 11 23.05.2012 19:30
Нарисовать окружность и прямоугольник Delpi bercut Помощь студентам 3 24.10.2010 20:40
Каким образом можно нарисовать прямоугольник, C# Gogent Помощь студентам 2 19.08.2010 11:14
Нарисовать прямоугольник с начальними координатами rubik Помощь студентам 2 08.03.2010 17:48