亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

【C#】RGB,CMYK,HSB各種顏色表示的轉換(轉)

2019-11-14 13:47:55
字體:
來源:轉載
供稿:網友

【C#】RGB,CMYK,HSB各種顏色表示的轉換

 

一、表示顏色的方式有很多種,如RGB,CMYK,HSB,Hex等等

  1、RGB:這種表示顏色由三原色構成,通過紅,綠,藍三種顏色分量的不同,組合成不同的顏色,例如,100%紅+100%綠混合可以得到黃色,紅綠藍三種顏色疊加可以得到白色,基本上屏幕顯示色彩都采用這種方式

  2、CMYK:也稱作印刷色彩模式,是一種依靠反光的色彩模式,主要用于印刷,和RGB類似,CMY是3種印刷油墨名稱的首字母:青色Cyan、品紅色Magenta、黃色Yellow。而K取的是black最后一個字母,之所以不取首字母,是為了避免與藍色(Blue)混淆。從理論上來說,只需要CMY三種油墨就足夠了,它們三個加在一起就應該得到黑色。但是由于目前制造工藝還不能造出高純度的油墨,CMY相加的結果實際是一種暗紅色。

 

  3、HSB:通過色相(hues),飽和度(saturation),亮度(brightness)來表示顏色

 

 

二、下面說說關于各種顏色之間的轉換

  1、RGB與CMYK之間的轉換

復制代碼
        public static void RGB2CMYK(int red, int green, int blue, out double c, out double m, out double y, out double k)        {            c = (double)(255 - red) / 255;            m = (double)(255 - green) / 255;            y = (double)(255 - blue) / 255;            k = (double)Math.Min(c, Math.Min(m, y));            if (k == 1.0)            {                c = m = y = 0;            }            else            {                c = (c - k) / (1 - k);                m = (m - k) / (1 - k);                y = (y - k) / (1 - k);            }        }        public static void CMYK2RGB(double c, double m, double y, double k, out int r, out int g, out int b)        {            r = Convert.ToInt32((1.0 - c) * (1.0 - k) * 255.0);            g = Convert.ToInt32((1.0 - m) * (1.0 - k) * 255.0);            b = Convert.ToInt32((1.0 - y) * (1.0 - k) * 255.0);        }
復制代碼

  2、RGB與HSB之間的轉換

復制代碼
        public static void RGB2HSB(int red, int green, int blue, out double hue, out double sat, out double bri)        {            double r = ((double)red / 255.0);            double g = ((double)green / 255.0);            double b = ((double)blue / 255.0);            double max = Math.Max(r, Math.Max(g, b));            double min = Math.Min(r, Math.Min(g, b));            hue = 0.0;            if (max == r && g >= b)            {                if (max - min == 0) hue = 0.0;                else hue = 60 * (g - b) / (max - min);            }            else if (max == r && g < b)            {                hue = 60 * (g - b) / (max - min) + 360;            }            else if (max == g)            {                hue = 60 * (b - r) / (max - min) + 120;            }            else if (max == b)            {                hue = 60 * (r - g) / (max - min) + 240;            }            sat = (max == 0) ? 0.0 : (1.0 - ((double)min / (double)max));            bri = max;        }        public static void HSB2RGB(double hue, double sat, double bri, out int red, out int green ,out int blue)        {            double r = 0;            double g = 0;            double b = 0;            if (sat == 0)            {                r = g = b = bri;            }            else            {                // the color wheel consists of 6 sectors. Figure out which sector you're in.                double sectorPos = hue / 60.0;                int sectorNumber = (int)(Math.Floor(sectorPos));                // get the fractional part of the sector                double fractionalSector = sectorPos - sectorNumber;                // calculate values for the three axes of the color.                 double p = bri * (1.0 - sat);                double q = bri * (1.0 - (sat * fractionalSector));                double t = bri * (1.0 - (sat * (1 - fractionalSector)));                // assign the fractional colors to r, g, and b based on the sector the angle is in.                switch (sectorNumber)                {                    case 0:                        r = bri;                        g = t;                        b = p;                        break;                    case 1:                        r = q;                        g = bri;                        b = p;                        break;                    case 2:                        r = p;                        g = bri;                        b = t;                        break;                    case 3:                        r = p;                        g = q;                        b = bri;                        break;                    case 4:                        r = t;                        g = p;                        b = bri;                        break;                    case 5:                        r = bri;                        g = p;                        b = q;                        break;                }            }            red = Convert.ToInt32(r * 255);            green = Convert.ToInt32(g * 255);            blue = Convert.ToInt32(b * 255); ;        }
復制代碼

  3、RGB與十六進制Hex表示的轉換

復制代碼
        public static string RGB2Hex(int r, int g, int b)        {            return String.Format("#{0:x2}{1:x2}{2:x2}", (int)r, (int)g, (int)b);        }        public static Color Hex2Color(string hexColor)        {            string r, g, b;            if (hexColor != String.Empty)            {                hexColor = hexColor.Trim();                if (hexColor[0] == '#') hexColor = hexColor.Substring(1, hexColor.Length - 1);                r = hexColor.Substring(0, 2);                g = hexColor.Substring(2, 2);                b = hexColor.Substring(4, 2);                r = Convert.ToString(16 * GetIntFromHex(r.Substring(0, 1)) + GetIntFromHex(r.Substring(1, 1)));                g = Convert.ToString(16 * GetIntFromHex(g.Substring(0, 1)) + GetIntFromHex(g.Substring(1, 1)));                b = Convert.ToString(16 * GetIntFromHex(b.Substring(0, 1)) + GetIntFromHex(b.Substring(1, 1)));                return Color.FromArgb(Convert.ToInt32(r), Convert.ToInt32(g), Convert.ToInt32(b));            }            return Color.Empty;        }        PRivate static int GetIntFromHex(string strHex)        {            switch (strHex)            {                case ("A"):                    {                        return 10;                    }                case ("B"):                    {                        return 11;                    }                case ("C"):                    {                        return 12;                    }                case ("D"):                    {                        return 13;                    }                case ("E"):                    {                        return 14;                    }                case ("F"):                    {                        return 15;                    }                default:                    {                        return int.Parse(strHex);                    }            }        }
復制代碼

 

轉換算法摘自:http://www.codeproject.com/Articles/19045/Manipulating-colors-in-NET-Part-1


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费97视频在线精品国自产拍| 亚洲第一网站男人都懂| 日韩av在线网址| 久久久国产精品亚洲一区| 欧美午夜女人视频在线| 91精品国产自产在线老师啪| 国产精品扒开腿做爽爽爽男男| 国内精品模特av私拍在线观看| 欧美成人精品影院| 日韩精品在线免费| 欧美日韩国产91| 久久噜噜噜精品国产亚洲综合| 国产精品国模在线| 日韩在线免费视频观看| 亚洲aⅴ日韩av电影在线观看| 国产成人精品亚洲精品| 亚洲综合色激情五月| 欧美精品生活片| 国产精品美女视频网站| 亚洲激情成人网| 成人福利在线观看| 久久久精品国产一区二区| 日韩有码片在线观看| 永久免费毛片在线播放不卡| 亚洲国产高清自拍| 欧美在线观看视频| 久久久久北条麻妃免费看| 91产国在线观看动作片喷水| 国产精品扒开腿做爽爽爽男男| 视频一区视频二区国产精品| 中文字幕亚洲一区二区三区五十路| 欧美精品电影免费在线观看| 欧美激情视频一区| 成人激情av在线| 日韩av中文字幕在线免费观看| 国产精品欧美亚洲777777| 亚洲精品久久久久久久久久久久| 九九热最新视频//这里只有精品| 久久色免费在线视频| 国产精品1区2区在线观看| 国产日韩精品综合网站| 国产欧美va欧美va香蕉在| 国产精品视频免费在线观看| 欧美亚洲国产另类| 欧美最顶级的aⅴ艳星| 日韩免费观看av| 欧美自拍视频在线| 中文字幕视频在线免费欧美日韩综合在线看| 日日摸夜夜添一区| 国产精品网站入口| 九九热精品在线| 日韩亚洲综合在线| 日韩在线视频观看| 亚洲视频网站在线观看| 岛国av一区二区在线在线观看| 欧美高清在线观看| 国产伦精品一区二区三区精品视频| 97精品国产91久久久久久| 国模精品视频一区二区| 亚洲а∨天堂久久精品9966| 久久久中精品2020中文| 亚洲最大福利视频网站| 日韩成人激情影院| 亚洲色图综合网| 久久成年人免费电影| 国产精品夜色7777狼人| 国产精品爽爽ⅴa在线观看| 久久久久久美女| 中文字幕国产亚洲| 欧美亚洲成人xxx| 欧美视频在线观看 亚洲欧| 九九热最新视频//这里只有精品| 久久久精品欧美| 国产精品久久久久福利| 高清在线视频日韩欧美| 亚洲免费视频一区二区| 91伊人影院在线播放| 欧美一级淫片丝袜脚交| 久久精品99久久香蕉国产色戒| 97视频在线看| 欧美日韩高清在线观看| 日韩视频第一页| 国产精品一区二区久久国产| 亚洲欧美国产日韩天堂区| 国产午夜精品麻豆| 欧美精品一区二区三区国产精品| 国产综合在线看| 亚洲精品videossex少妇| 在线观看欧美日韩国产| 久久视频中文字幕| 久久久久女教师免费一区| 成人激情黄色网| 日韩av观看网址| 中文字幕不卡在线视频极品| 亚洲片在线观看| 精品日韩中文字幕| 欧美激情videoshd| 国产精品爽爽爽爽爽爽在线观看| 精品一区电影国产| 亚洲欧美日韩综合| 国产精品黄页免费高清在线观看| 日韩麻豆第一页| 亚洲国产精品国自产拍av秋霞| 国产日韩综合一区二区性色av| 欧美极品少妇xxxxⅹ免费视频| 亚洲性生活视频在线观看| 亚洲v日韩v综合v精品v| 国产丝袜一区视频在线观看| 久久99亚洲热视| 国产视频精品一区二区三区| 精品露脸国产偷人在视频| 隔壁老王国产在线精品| 91情侣偷在线精品国产| 国产婷婷97碰碰久久人人蜜臀| 91亚洲精品久久久久久久久久久久| 国产丝袜一区二区| 中文在线资源观看视频网站免费不卡| 成人h片在线播放免费网站| 国产视频精品自拍| 国产精品视频精品| 69视频在线免费观看| 日韩av在线免费观看| 在线免费观看羞羞视频一区二区| 亚洲人成电影网站色…| 成人黄色短视频在线观看| 午夜精品久久久久久99热软件| 久久视频免费观看| 欧美在线免费视频| 88国产精品欧美一区二区三区| 久久精品夜夜夜夜夜久久| 久久久久久国产精品三级玉女聊斋| 91精品久久久久久久久| 欧美老少配视频| 欧美性猛交xxxx偷拍洗澡| 亚洲а∨天堂久久精品喷水| 91精品国产综合久久久久久久久| 国产成人在线亚洲欧美| 亚洲天堂开心观看| 中文字幕日韩免费视频| 欧美中文字幕在线| 欧美电影在线观看高清| 日韩精品www| 91精品国产99久久久久久| 精品国偷自产在线视频99| 久久久国产成人精品| 国产精品美女久久久久久免费| 亚洲国产成人久久综合| 国产精品日韩精品| 日韩在线观看免费高清完整版| 韩国国内大量揄拍精品视频| www.美女亚洲精品| 亚洲一区中文字幕在线观看| 亚洲国产成人在线视频| 日本久久久久亚洲中字幕| 日韩精品视频在线观看网址| 亚洲男人第一网站| 亚洲色图欧美制服丝袜另类第一页| 激情成人在线视频| 亚洲精品一区中文字幕乱码| 亚洲国产中文字幕久久网| 国产精品日韩在线播放| 国产va免费精品高清在线| 日韩在线播放av| 91精品久久久久久久久久久久久久|