Ну, это выглядит нормально для меня, за исключением того, что вы используете Color.R
(и т. Д.) Вместо color.R
- вы уверены, что фактически используете возвращенный Color
вместо того, чтобы предполагать, что он изменит существующий цвет? Как вы определяете, что «уровень прозрачности» не изменится?
Вот пример, показывающий, что значение альфа действительно верно в возвращенном цвете:
using System;
using System.Drawing;
class Test
{
static Color SetTransparency(int A, Color color)
{
return Color.FromArgb(A, color.R, color.G, color.B);
}
static void Main()
{
Color halfTransparent = SetTransparency(127, Color.Black);
Console.WriteLine(halfTransparent.A); // Prints 127
}
}
Никаких сюрпризов. Было бы очень полезно, если бы вы предоставили короткую, но полную программу, которая демонстрирует точную проблему, с которой вы столкнулись. Вы уверены, что что бы вы ни делали с цветом, даже поддерживает прозрачность?
Обратите внимание, что этот метод фактически уже существует как Color.FromArgb(int, Color)
.