С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
#1

альфа-наложение цвета - C++

08.10.2010, 18:10. Просмотров 1076. Ответов 2
Метки нет (Все метки)

есть массив пикселей, рисуется несколько графиков со сглаживанием (Графики рисуются последовательно). Нужно в местах пересечения пикселей использовать альфа-наложение, т.е.
есть цвет А(0x8800FF00) и В(0x88880022) в результате наложения должны получить нечто вроде С(0xFF448811).
Какой формулой связать
A+B=С??
С использованием побитовых операций или мб по-другому
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2010, 18:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос альфа-наложение цвета (C++):

С++ Builder Циклы с условием (при вводе адреса цвета (например, 0 255 0) выдавать имя цвета) - C++
Help, не могу решить задачку ЛБ: нужно написать программу, при вводе адреса цвета (на пример 0 255 0 выдавал имя цвета). ...

Альфа-прозрачность формы - C++
Впрочем, здесь пойдет речь не совсем о альфа-прозрачности формы.. Как можно на C++ осуществить такую вещь: Тоесть...

Альфа-бета отсечения - C++
Нужно реализовать алгоритм альфа-бета отсечений. Ребята,выручайте-не сдам лабу,не будет допуска к экзамену и это крах..

Как считается угол альфа - C++
#include<iostream> #include<cmath> using namespace std; int main() { setlocale(0,""); double alpha,V,L,k; const...

Как записать альфа в математическом выражении - C++
Задача 1. Написать программу, которая вычисляет значение выражения, и определить ее значение для введенного пользователем значений...

Добавить маркер (альфа, бетта, гамма.) в конец каждой строки - C++
Нужно добавить маркер в конце каждой строки. Маркер это символ альфа, бетта, гамма... Каким образом это сделать? #include <stdafx.h> ...

2
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
08.10.2010, 23:28 #2
цвет в формате RGBA?
если так то складывать во первых надо по байтам R G B
например такой функцией Ra = Ra/2 + Rb*float(Ab/0xFF)/2;

Ra - R Для пикселя A
Rb R Для пикселя B
Ab - альфа для пикселя B
1
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
09.10.2010, 02:30  [ТС] #3
DeadRipper, премного благодарен). Простое решение, зато результат какой)) Не то что некоторые другие "алгоритмы" (к примеру):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* alpha blend routine */
unsigned int AlphaBlend(const unsigned int bg, const unsigned int src)
{
   unsigned int a = src >> 24;    /* alpha */
 
   /* If source pixel is transparent, just return the background */
   if (0 == a) 
      return bg;
 
   /* alpha blending the source and background colors */
   unsigned int rb = (((src & 0x00ff00ff) * a) +  
      ((bg & 0x00ff00ff) * (0xff - a))) & 0xff00ff00;
   unsigned int    g  = (((src & 0x0000ff00) * a) + 
      ((bg & 0x0000ff00) * (0xff - a))) & 0x00ff0000;
 
    return (src & 0xff000000) | ((rb | g) >> 8);
}
Добавлено через 1 час 32 минуты
И наверное лучше
C++
1
2
3
R = Ra + Rb*float(Ab/0xFF)
if(R>255)
    R=255;
Потому что если делить на 2, то цвета получаются вполовину яркие...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2010, 02:30
Привет! Вот еще темы с ответами:

Дана гипотенуза с, и угол альфа прямоугольника, найти площадь и периметр - C++
Дана гипотенуза с, и угол альфа прямоугольника, найти площадь и периметр

Наложение видео - C++
Здравствуйте. Заранее извиняюсь, если запостил не в тот раздел, просто вопрос достаточно обширный. Итак. Есть два видео(или видео и...

Наложение двух матриц - C++
У меня есть 2 матрицы a и b и мне нужно наложить одну матрицу на другую так, чтобы результатом было то, что на картинке. Задача...

Наложение текста на картинку - C++
Ребят есть такая проблемrа, нужно наложить текст на картинку в примерно таком виде: функция(<изображение>, <текст>, любые параметры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.