от
Допустим, что мы имеем цвета в формате ARGB:
Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.
Когда это рисовали поверх существующего цвета, цвет будет гармонировать. Поэтому, когда он смешивается с белым, результирующий цвет является
Color.FromARGB(255, 162, 133, 255);
Решение должно работать так:
Color blend = Color.White; 
Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.      
Color rgb = ToRGB(argb, blend); //Same as Color.FromARGB(255, 162, 133, 255);
Что такое реализация
ToRGB
это?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

4 Ответы

0 голосов
от
Допустим, что мы имеем цвета в формате ARGB:
Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.
Когда это рисовали поверх существующего цвета, цвет будет гармонировать. Поэтому, когда он смешивается с белым, результирующий цвет является
Color.FromARGB(255, 162, 133, 255);
Решение должно работать так:
Color blend = Color.White; 
Color argb = Color.FromARGB(127, 69, 12, 255); //Light Urple.      
Color rgb = ToRGB(argb, blend); //Same as Color.FromARGB(255, 162, 133, 255);
Что такое реализация
ToRGB
это?
0 голосов
от
Это называется альфа-смешивание. В psuedocode, предполагая, что цвет фона (смесь) всегда имеет 255 Альфа. Также предполагает, что альфа-это 0-255.
alpha=argb.alpha()
r = (alpha/255)*argb.r()   (1 

Примечание: Вы, вероятно, нужно быть немного (больше) осторожнее с плавающей точкой/инт математике и округления вопросы, в зависимости от языка. Литые интермедиатов соответственно

Отредактированный, чтобы добавить:

Если у вас нет цвет фона с Альфой 255, алгебра становится намного сложнее. Я делал это раньше и это веселое занятие оставляем читателям (если вам действительно нужно знать, задать другой вопрос :). 

Другими словами, Какого цвета сливается с какой-то фон такой же, как смешивание, смешивания Б. Это вроде как расчет B (что не то же самое как B а).
0 голосов
от
Я знаю, что это старый нить, но я хочу добавить это:
Public Shared Function AlphaBlend(ByVal ForeGround As Color, ByVal BackGround As Color) As Color
    If ForeGround.A = 0 Then Return BackGround
    If BackGround.A = 0 Then Return ForeGround
    If ForeGround.A = 255 Then Return ForeGround
    Dim Alpha As Integer = CInt(ForeGround.A)   1
    Dim B As Integer = Alpha * ForeGround.B   (255
0 голосов
от
если вам не нужно знать, это сделать, вы всегда можете использовать метод для Win32 метода getpixel, я считаю. Примечание: печатать на iPhone в середине Миссури без инет доступ. Будет выглядеть реальный пример использования Win32 и посмотреть, если есть .чистый эквивалент. В случае, если кто-то заботится, и не хочет использовать (отлично) ответ выложил выше, вы можете получить значение цвета пикселя .Продажи через этот пример ссылке на MSDN
...