精华内容
下载资源
问答
  • 十进制数转颜色码(转RGB转Color)

    万次阅读 2018-05-30 21:11:09
    今天碰到一个这样的问题。我在修改以前用VB写的一个功能,这个功能中有一个部分是使用着色器给一段文字上色。...1、十进制成十六进制字符串。 2、十六进制字符串RGB码。 3、RGB成Color类型的值,给...

    今天碰到一个这样的问题。我在修改以前用VB写的一个功能,这个功能中有一个部分是使用着色器给一段文字上色。然后这个颜色值存入数据库中的值是一个十进制数。新项目用C#,在Winform中需要读取这个数据给文字画上颜色。

     

    通过上网找资料以及结合个人理解,该转换过程主要有以下几个步骤:

    1、十进制数转成十六进制字符串。

    2、十六进制字符串转成RGB码。

    3、RGB码转成Color类型的值,给控件文字颜色属性赋值。

     

     

    在研究这个功能实现的过程中需要先了解一些关键点。

    首先,就是colorEdit等选颜色的控件都是通过设置RGB值来设置颜色的。而且R、G、B的范围都是0~255。转成十六进制就是0~FF。因此十六进制字符串为6位字符的字符串,范围为000000~FFFFFF。

    其次,就是十进制转成十六进制字符串时,字符串的字符个数可能没有6位,这种情况需要在字符串前补0。如果超过6位,说明这个十进制不是用来转颜色码的。

    最后,通过测试发现这个6位字符的十六进制字符串,前两个字符对应这RGB码的B位,中间两位对应G位,后面两位对应R位。

     

    一、十进制转十六进制

    /// <summary>
            /// 十进制转换到十六进制
            /// </summary>
            /// <param name="strDecimal">十进制数的字符串</param>
            /// <returns>十六进制字符串</returns>
            public static string Decimal2Hexadecimal(string strDecimal)
            {
                //十进制数
                ulong Decimal = Convert.ToUInt64(strDecimal);
                //十六的倍数
                ulong HexadecimalMultiple;
                //十六进制数取余16
                ulong HexadecimalChar;
                //十六进制字符串
                string Hexadecimal = "";
                do
                {
                    HexadecimalMultiple = (ulong)Math.Floor((decimal)(Decimal / 16));
                    HexadecimalChar = Decimal % 16;
                    Hexadecimal = Number2Char(HexadecimalChar) + Hexadecimal;
                    Decimal = HexadecimalMultiple;
                }
                while (Decimal >= 16);
                if (Decimal != 0)
                    Hexadecimal = Number2Char(Decimal) + Hexadecimal;
                return Hexadecimal;
            }
            /// <summary>
            /// 数字转字符串
            /// </summary>
            /// <param name="number">数字</param>
            /// <returns>字符串</returns>
            public static string Number2Char(ulong number)
            {
                switch (number)
                {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                    case 9:
                        return number.ToString();
                    case 10:
                        return "A";
                    case 11:
                        return "B";
                    case 12:
                        return "C";
                    case 13:
                        return "D";
                    case 14:
                        return "E";
                    case 15:
                        return "F";
                    default:
                        return "";
                }
            }

    二、十六进制转RGB编码以及转Color

            /// <summary>
            /// 十六进制转Color
            /// </summary>
            /// <param name="strHexadecimal">十六进制字符串</param>
            /// <returns>颜色值</returns>
            public static Color Hexadecimal2Color(string strHexadecimal)
            {
                try
                {
                    if (strHexadecimal.Length == 0)
                    {
                        return System.Drawing.Color.FromArgb(0, 0, 0);//设为黑色
                    }
                    else
                    {
                        //十六进制颜色码为6个字符,补全6位字符
                        if (strHexadecimal.Length < 6)
                        {
                            strHexadecimal = strHexadecimal.PadLeft(6, '0');
                        }
                        string strB = strHexadecimal.Substring(0, 2);
                        string strG = strHexadecimal.Substring(2, 2);
                        string strR = strHexadecimal.Substring(4, 2);
                        int B = int.Parse(strB, System.Globalization.NumberStyles.AllowHexSpecifier);
                        int G = int.Parse(strG, System.Globalization.NumberStyles.AllowHexSpecifier);
                        int R = int.Parse(strR, System.Globalization.NumberStyles.AllowHexSpecifier);
                        //RGB转Color
                        Color color = Color.FromArgb(R, G, B);
                        return color;
                    }
                }
                catch
                {
                    //设为黑色
                    return System.Drawing.Color.FromArgb(0, 0, 0);
                }
            }

    三、封装了前面几个方法后面,就可以封装一个十进制转Color的方法了

            /// <summary>
            /// 十进制转Color
            /// </summary>
            /// <param name="Decimal">十进制数</param>
            /// <returns>颜色值</returns>
            public static Color Decimal2Color(string Decimal)
            {
               return Hexadecimal2Color(Decimal2Hexadecimal(Decimal));
            }

     

    以上是没有考虑微软已经封装好的方法,自己去思考的步骤写出来的。接下来使用微软封装好的一些方法能够使代码更优。

    private static Color Decimal2Color(ulong Decimal)
            {
                string Hexadecimal = Decimal.ToString("X6");
                string strB = Hexadecimal.Substring(0, 2);
                string strG = Hexadecimal.Substring(2, 2);
                string strR = Hexadecimal.Substring(4, 2);
                int B = Convert.ToInt32(strB, 16);
                int G = Convert.ToInt32(strG, 16);
                int R = Convert.ToInt32(strR, 16);
                return Color.FromArgb(R, G, B);
            }

    ulong类型的十进制数字.ToString("X6");会转成十六进制的6位字符串,并且不足6位时会在原来基础的前面补0。

    接下来就是拆分出R、G、B分别对应的字符。

    接着,通过Convert.ToInt32("",16),能够把16进制字符转成R、G、B的32位整形数值。

    最后使用Color对象的FromArgb()方法,对应放入R、G、B参数值就可以得出颜色。

     

     

     

     

     

    展开全文
  • 十进制颜色值转rgb

    千次阅读 2017-11-10 13:07:44
    void toRgba(int color) ...int rgb=new int[3]; int b = color & 0xff; int g = (color >> 8) & 0xff; int r = (color >> 16) & 0xff; rgb[0]=r; rgb[1]=g; rgb[2]=b; return rgb; } 例:红色:16711680
    void toRgba(int color)
    

    {

    int rgb=new int[3];

    int b = color & 0xff;

    int g = (color >> 8) & 0xff;

    int r = (color >> 16) & 0xff;

    rgb[0]=r;

    rgb[1]=g;

    rgb[2]=b;

    return rgb;

    }


    例:

    红色:16711680  十进制

              11111111 00000000 00000000 二进制

       b = (11111111 00000000 00000000) & (00000000 00000000 11111111) = 0;

      g = (00000000 11111111 00000000) & (00000000 00000000 11111111) = 0;

       r =(00000000 00000000 11111111) & (00000000 00000000 11111111) = 11111111;    (255)


    展开全文
  • import java.awt.*; public class SwitchToRGB { public static void main(String[] args) { printRGBString(12583104); } private static void printRGBString(int RGBInt){ Color ...
    import java.awt.*;
    
    public class SwitchToRGB {
        public static void main(String[] args) {
            printRGBString(12583104);
        }
    
        private static void printRGBString(int RGBInt){
            Color color = new Color(RGBInt);
            System.out.printf("%d,%d,%d,%d\n", color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
        }
    }

     

    展开全文
  • function toRgb($color) {  $rgb=[];  $b = $color &amp; 0xff;  $g = ($color &gt;&gt; 8) &amp; 0xff;  $r = ($color &gt;&gt; 16) &amp; 0xff;  $rgb[0]=$r;  $...

    function toRgb($color)
    {

            $rgb=[];

            $b = $color & 0xff;

            $g = ($color >> 8) & 0xff;

            $r = ($color >> 16) & 0xff;

            $rgb[0]=$r;

            $rgb[1]=$g;

            $rgb[2]=$b;

            return $rgb;
    }

     

    var_dump(toRgb('16711680'));

    例:

    红色:16711680  十进制

    结果:array(3) {
      [0]=>
      int(255)
      [1]=>
      int(0)
      [2]=>
      int(0)
    }

    展开全文
  • /*RGB颜色转换为16进制*/ String.prototype.colorHex = function(){  var that = this;  if(/^(rgb|RGB)/.test(that)){  var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g,””).split(“,”);  
  • 背景知识 hex: hex → rgb
  • RGB颜色 rgb 颜色为三原色的意思, 分别为 red 红色 green 绿色 blue 蓝色 ...//十六进制转换位十进制 //取第一位*16+第二位的数字 例如#ff0011; //这里的f相当于15 F*16+F=255; F*16=240+15=255; 0*16+
  • Arduino-十六进制-十进制转换 用于在 Arduino 上在十六进制字符串和十进制数之间转换值的实用函数。 (有助于颜色转换)。 在 MIT 许可下许可用于任何用途。
  • 今天做web交互的时候对服务器下发的rgb色百思不得其解,竟然是一串数字...原来是rgb所能表达的最大颜色(256 * 256 * 256),但是网页肯定必须使用rgb或者十六进制来表示,那么就写了个函数来转换一下: // 转化为...
  • //0x开头的数字代表十六进制 设置点为黑色 我们获取到的RGB会是ARGB(十六进制) 10进制的int形式 当我们通过上述方法获取到R G B的结果是为10进制0-255 所以我们执行操作是十六进制 最终设置值为16进制的10进制表示...
  • 前端练习16 16进制颜色值 RGB

    千次阅读 2018-12-16 18:25:39
    完成函数hexToRGB,它的作用将16进制颜色值转换成RGB值: hexToRGB('#F0F0F0') // =&gt; rgb(240, 240, 240) hexToRGB('#9fc') // =&gt; rgb(153, 255, 204) hexToRGB('无效颜色') // =&gt; null 实现 ...
  • LongToRGB HexToRGB 颜色十进制转换为RGB 颜色十六进制转换为RGB转十进制再转为RGB) 二进制,十进制,十六进制 之间转换
  • php function hex2rgb($colour) { if ($colour [0] == ‘#’) { $colour = substr ( $colour, 1 ); } if (strlen ( $colour ) == 6) { list ( $r, $g, $b ) = array ($colour [0] . $colour [1], $colour [2] ...
  • android十进制RGB转换为十六进制RGB

    千次阅读 2015-04-17 16:23:40
    提供一段简便的代码,将十进制RGB(一般我是用QQ截图ctr+alt+A显示的那个RGB),转换为android的xml文件中描述颜色的十六进制(记得在前面加上#号)
  • lua 颜色:十六进制转十进制

    千次阅读 2020-02-25 17:23:45
    获取 rgb格式的颜色 #996c33 ----> cc.c3b(153, 108, 51),cc.c4b(153, 108, 51, 255) function getColorOfRGB(str) -- 去掉#字符 local newstr = string.gsub(str, '#', '') -- print("newstr is --"..newstr)...
  • //十六进制颜色值域RGB格式颜色值之间的相互转换 //------------------------------------- //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String....
  • 16进制10进制问题及代码:/**问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。*样例输入FFFF*样例...
  • 那么,将16进制转换为RGB色值,其实就是分别把#号后面的两位作为一个单位转换成十进制。 代码如下: /** * 将16进制颜色转换为RGB * author www.jb51.net */ function hex2rgb($hexColor){ $color=str_replace('#'...
  • 16进制颜色转换RGB原理

    千次阅读 2020-07-08 14:39:22
    常见的几种表示颜色的方法有: ColorName: 直接用颜色的名称来指定颜色,比如: red blue green yellow 优点: 很直观的表达想要使用的颜色 缺点: 颜色的名称很少, 不能有效表示一些较为丰富的颜色 ...HEX: 十六进制
  • arduino十进制转十六进制

    万次阅读 2018-03-13 18:27:44
    以下是arduino十进制转十六进制的方法,如果有什么可以改进的地方请留言 打印 Serial.print(inByte, HEX); 十进制转十六进制 //十进制转十六进制 String tohex(int n) { if (n == 0) { return "00...
  • rgb 颜色 十进制If you have ever needed to get an HTML color code from an application that only has the Windows color picker, you might have wondered how to convert that over to an ...
  • 今天做东西,下载了段js,人家里面的颜色值是16进制的(就是0x开头的),而我只能得到10进制的,网上找了半天,看见了这个东东,比较好用,虽然不常用,还是分享一下吧:   原文地址在此:...
  • c++如何将RGB(230,230,230)转换成0x十六进制移位和按位加: int r,g,b; int c; // TC 用 long int; // 如果次序是RRGGBB c = r如何将RGB颜色的R,G,B值转换成16进制合并到一起rgb颜色格式是由3组0~255的数字构成,...
  • 如何在JavaScript中将十进制值转换为等效的十六进制值?
  • RGB按R,G,B转化为10进制数字 RGB分别转为16进制后拼接字符串,将字符串转为10进制数字输出 例:输入:rgb(10,10,10),输出:657930 代码: package tu; import java.util.*; import java.util.regex.*; public ...
  •  Result:='RGB('||str1||','||str2||','||str3||')';  else  select to_number(substr(strcolor,2,2),'xx') into str1 from dual;  select to_number(substr(strcolor,4,2),'xx') into str2 from dual;  ...
  • 3组数字组合分别依次对应 rgb(166,92,218) 的3个十进制数字。 因此将rgb格式转换成十六进制,只需要将三个数值转换成十六进制即可。反之则逆向转换。 1. RGB转换为HEX RGB与HEX中每个颜色都是一一对应的关系, 如下...
  • cocos2dx Color3B类型 ...Color3B Spitslot::int2rgb(int color) { int r = (color & 0xff0000) >> 16; int g = (color & 0xff00) >> 8; int b = (color & 0xff); return Color3B(r, g, b); }
  • 实现RGB颜色的调配,使得VB设置RGB颜色时更加直观
  • 10进制rgb转16进制rgb

    2021-10-14 13:49:05
    def color_changer(a,b,c): return "#"+"".join([i[2:] if len(i[2:])>1 else '0'+i[2:] for i in [hex(a),hex(b),hex(c)]]) print (color_changer(112,168,1)) #70a801

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,712
精华内容 5,084
关键字:

十进制转rgb