2014-01-20 2 views
1

я пишу некоторые C# код для альфа-смесь два 32-битных пикселей в ARGB формы, как это:Альфа Смесь два ARGB цвет в виде 32-битового

Red = 0xFFFF0000 with an Alpha of 255 "FF" 

В любом случае, я пытаюсь избежать байт на байты смешения, как это:

public static Color Blend(this Color color, Color backColor, double amount) 
    { 
     amount = (255 - amount); 
     byte r = (byte)((color.R * amount/255) + backColor.R * (255 - amount)/255); 
     byte g = (byte)((color.G * amount/255) + backColor.G * (255 - amount)/255); 
     byte b = (byte)((color.B * amount/255) + backColor.B * (255 - amount)/255); 
     return Color.FromArgb(r, g, b); 
    } 

Я пытаюсь сделать это как можно быстрее, не используя двойной. Есть ли уравнение, которое может смешать два пикселя в целочисленной форме, не разбивая их на байты?

P.S. Я не могу использовать любые .NET-вызовы, такие как Color.FromARGB и т. Д.

Спасибо-х

+1

Вы в буквальном смысле используете Colors.FromArgb в своем примере кода. –

ответ

0

Вы можете использовать the other .FromArgb method, который принимает параметр целого числа альфа.

+0

Я не могу использовать это с тем, что я делаю грустно. Я планирую написать уравнение, которое делает то, что я хочу для сборки. – user3213751

+0

Затем прочитайте [этот SO ответ о смешивании ARGB] (http://stackoverflow.com/questions/1944095/how-to-mix-two-argb-pixels) –

+1

Уже прочитал его перед тем, как задать свой вопрос. Мне нужно уравнение, которое не делает байта на байт, смешивая довольно смешение всего значения ARGB, чтобы я мог экономить вычисления процессора и время. – user3213751

Смежные вопросы