新网站seo,关键词搜索站长工具,做网站为什么要用php,建设网站文案GDI与WPF中的颜色简析 原文:GDI与WPF中的颜色简析--------------------------------------------------------------------------------引用或转载时请保留以下信息#xff1a;大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com http://www.brawdraw.com萝卜鼠在线图形… GDI与WPF中的颜色简析 原文:GDI与WPF中的颜色简析 --------------------------------------------------------------------------------引用或转载时请保留以下信息大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com http://www.brawdraw.com萝卜鼠在线图形图像处理-------------------------------------------------------------------------------- 我们知道颜色在界面表面中起着举足轻重的作用。让我们来分析一下GDI与WPF中的颜色。 一、GDI中:Color位于System.Drawing命名空间下。当我们需要使用某种颜色时我们可以用以下几种方式:(1)Color.FromArgb(alpha, red, green, blue) //alpha为0~255(2)Color.FromArgb(red, green, blue) //此时alpha值始终为255即不透明(3)Color.FromKnownColor(KnownColor color)(4)Color.FromName(string knownColorString)(5)Color.FromSysIcv(int icv)比如Color redAlpha50Percent Color.FromArgb(128, 255, 0, 0); //半透明红色Color redWithoutAlpha Color.FromArgb(255, 0, 0); //红色完全不透明Color redFromKnownColor Color.FromKnownColor(KnownColor.Red);Color redFromName Color.FromName(Red);比如用红色填充一个矩形graphics.FillRectangle(new SolidBrush(redFromKnownColor), 10, 10, 100, 40);为了进行比较我将有区别的静态方法用“ 代码 ”底色突出。由于某些颜色“众所周知”在各种环境和操作系统中均使用统一的字面说法比如红色(Red),黑色(Black)等等。它们是在系统中已知或者说是已经预先定义的颜色。这些常见的颜色如下图 二、WPF中Color位于System.Windows.Media命名空间下。由于WPF中有XAML所以我们分两种情况来描述1、当我们在XAML中使用颜色时我们可以使用XAML的属性(1)object propertypredefinedColor/predefinedColor为预定义颜色见上图(2)object property#rgb/(3)object property#rrggbb/(4)object property#argb/(5)object property#aarrggbb/其中r,g,b分别为0~F的十六进制颜色值a为0~F的十六进制值用于表示Alpha数值不透明度。(6)object propertysc# scA,scR,scG,scB/其中sc# 为关键字scA,scR,scG,scB为介于0.0~1.0的Single值。(7)object propertyContextColor profileUri alphaValue,colorValue/其中ContextColor为关键字profileUri为icm文件的地址后面是alpha值和颜色值。 下面分别举例使用蓝色填充宽为100高为40的矩形其中Blue为预定义颜色蓝色它的十六位进制#rgb的表示是#00F#rrggbb的表示是#0000FF#argb表示是#00F#aarrggbb表示为#FF0000FF 1XAML代码Rectangle Width100 Height40 FillBlue /注意这里的Rectangle对应于上面的object, Fill则对应于property而Blue就是预定义好的颜色值了。但需要说明的是这里的FillBlue最终会被转换成SolidColorBrush. C#代码Rectangle myPredefinedBrushRectangle new Rectangle();myPredefinedBrushRectangle.Width 100;myPredefinedBrushRectangle.Height 40;myPredefinedBrushRectangle.Fill Brushes.Blue; 2也可以这样Rectangle Width100 Height40 Fill#FF0000FF / 3还可以这样Rectangle Width100 Height40 Rectangle.Fill SolidColorBrush SolidColorBrush.Color Color A255 R0 G0 B255 /!-- 还可以这样 Color ScA1.0 ScR0.0 ScG0.0 ScB1.0 /-- /SolidColorBrush.Color /SolidColorBrush /Rectangle.Fill/Rectangle上面的SolidColorBrush标签的内容还可以改成 SolidColorBrush ColorContextColor file://C:/WINDOWS/system32/spool/drivers/color/sRGB%20Color%20Space%20Profile.icm 1.0,0.0,0.0,1.0/ 如果用C#代码Rectangle myRgbRectangle new Rectangle();myRgbRectangle.Width 100;myRgbRectangle.Height 40;SolidColorBrush mySolidColorBrush new SolidColorBrush();mySolidColorBrush.Color Color.FromArgb(255, 0, 0, 255);myRgbRectangle.Fill mySolidColorBrush; 2、使用C#代码描述(1)Color.FromRgb(red, green, blue)(2)Color.FromArgb(alpha, red, green, blue)//alpha, red, green, blue为0~255的byte值 (3)Color.FromValues(colorValues, iccUri)(4)Color.FromAValues(alpha, colorValues, iccUri)//alpha为0.0f~1.0f的值; colorValues为float[4]数组, 所有值均为0.0f~1.0f的值; iccUri为icc文件的地址见下例private Color FromAValuesExample(){ // 褐色 Color myAValuesColor new Color(); float [] colorValues new float[4]; colorValues[0] 0.0f; colorValues[1] 0.5f; colorValues[2] 0.5f; colorValues[3] 0.5f; //定义颜色映射的icc文件 Uri iccUri new Uri(C://sampleColorProfile.icc); myAValuesColor Color.FromAValues(1.0f, colorValues, iccUri); return myAValuesColor;} (5)Color.FromScRgb(scA, scR, scG, scB)scA, scR, scG, scB为Single类型值比如Color.Color.FromScRgb(1, 0, 0, 1); 最后举个完整点的例子Page xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml StackPanel Margin20 Rectangle Width100 Height40 Margin10 Rectangle.Fill SolidColorBrush SolidColorBrush.Color Color ScA1.0 ScR0.0 ScG0.0 ScB1.0 / /SolidColorBrush.Color /SolidColorBrush /Rectangle.Fill /Rectangle Rectangle Width100 Height40 Margin10 Rectangle.Fill SolidColorBrush SolidColorBrush.Color Color A255 R0 G0 B255 / /SolidColorBrush.Color /SolidColorBrush /Rectangle.Fill /Rectangle Rectangle Width100 Height40 Margin10 Rectangle.Fill SolidColorBrush ColorContextColor file://C:/WINDOWS/system32/spool/drivers/color/sRGB%20Color%20Space%20Profile.icm 1.0,0.0,0.0,1.0/ /Rectangle.Fill /Rectangle /StackPanel/Page效果很简单如下图 三、比较一下我们发现第二条1中(6)、(7)是在GDI中所没有的。WPF为了更好的描述颜色新增了scRGB颜色空间。还增加了icc文件对颜色的描述。我们还发现对于GDI中的KnownColor在WPF的C#代码中已不见“踪影”其实那是被转为另一种表现形式罢了。实际上WPF还对GDI中没有涉及的CYMK印刷色的相关处理作了扩充。我会在今后的文章中详细描述它们。 更多参考:Understanding the Colors in .NET http://www.digcode.com/default.aspx?pageed51cde3-d979-4daf-afae-fa6192562ea9article2c0290b8-6d38-4ce7-951d-c9080a187bef.Net Color.cs http://www.koders.com/csharp/fid9CA7E93CA709734A9EFC563E7FAA04FCB3779F52.aspx posted on 2018-10-25 14:34 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/9849674.html