gpt4 book ai didi

c# - 基于另一种颜色和 alpha 创建 System.Drawing.Color 的扩展方法或子类?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:58 25 4
gpt4 key购买 nike

我想在 C#(而不是 XAML)中使用以下习惯用法之一创建颜色:

Color transparentblue = TransparentColor(Brushes.Blue, 0.5); // 0.5 => 128
Color transparentblue = Brushes.Blue.SetAlpha(0.5); // again, 0.5 => 128

我想摆脱 Color.FromArgb() 语法,它对设计人员一点都不友好。我也让它在静态类中使用静态方法,但写得有点重:

public static class ColorGenerators {        
public static Color GetTransparentColor (Color color, double opacity) {
byte op = (byte)(opacity*255);

return Color.FromArgb(op, color.R, color.G, color.B);
}
}

// To be used as
var transparentblue = ColorGenerators.GetTransparentColor(Color.Blue, 0.5);

我仍然更喜欢扩展方法方法,在我看来,我们公司很快就会受益于与 this question 中描述的方法类似的方法。 ,所以我想知道它们会是什么样子(假设 Color 是一个结构,而不是一个类)。

最佳答案

这样的事情怎么样:

public static class ColorExtensions
{
public static Color WithAlpha(this Color color, double opacity)
{
byte op = (byte)(opacity*255);
return Color.FromArgb(op, color.R, color.G, color.B);
}
}

关键是第一个参数中的this关键字。这(以及 static 类中的 static 方法)向编译器表明这是一个扩展方法。

Color transparentblue = Color.Blue.WithAlpha(0.5);

延伸阅读

关于c# - 基于另一种颜色和 alpha 创建 System.Drawing.Color 的扩展方法或子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15820241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com