c# winform 如何实现16进制颜色值的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# winform 如何实现16进制颜色值的转换相关的知识,希望对你有一定的参考价值。

在winform里面 我想把一个"#CE76D1"这样的颜色值赋给textbox的backcolor,请问如何转化呢?怎么写、、、、
也就是说 如何把""#CE76D1"这样的一个颜色表示值转化为Color对象?
谢谢。。。

不知道有没有直接提供这种color结构的转换,MSDN上也没有发现这种使用方式,但是可以直接使用RGB来表示:

我和你说一下#CE76D1到RGB的转换吧,希望能帮助你:
16进制表示颜色值:CE76D1=>Red:CE Green:76 Blue:D1
只需将其转换为10进制就可以了,方法如下:
16进制中 C=12;D=13;E=14
转换为10进制:
Red:CE=C*16+E=12*16+14=206
Green:76=7*16+6=118
Blue:D1=13*16+1=209
所以#CE76D1转换为RGB后为:206 118 209
然后可以用以下方式:
this.textbox.BackColor = System.Drawing.Color.FromArgb(206,118,209);
就能实现你的想法了,当然你完全可以用PS等软件直接得到RGB值,如果你一定要使用#CE76D1的方式表示,你可以按照上面的方法编写一个类来实现它们之间的转换。

希望能帮到你,大家互相学习
参考技术A 代码如下:

Color c=Color.FromArgb(0,Convert.ToInt32("CE",16),Convert.ToInt32("76",16)Convert.ToInt32("D1",16));

//这里的CE、76和D1可以用String的Substring方法取得
参考技术B Color c=Color.FromArgb(0,Convert.ToInt32("CE",16),Convert.ToInt32("76",16)Convert.ToInt32("D1",16));
这里的CE、76和D1你可以用String的Substring方法取得
--------------------------
有个更简单的写法
UInt32 num=Convert.ToUint32("#CE76D1".Replace("#","0x"));
Color aColor=Color.FromArgb(0,(int)num>>16&0xff,(int)num>>8&0xff,(int)num&0xff);
参考技术C 九级的是正解,二级那个也对。

呵呵。不过最简单的是最好的。

我一开始也用fromARGB()方法。。。
参考技术D 可以用ColorTranslator.Fromhtml,如下
textbox.BackColor = ColorTranslator.FromHtml("#CE76D1");本回答被提问者和网友采纳

c# winform 如何取得用户控件中 的值

请问 在窗体中包含一个用户控件,我怎么获取用户控件中的值到窗体的文本框中啊?
用户控件中的值是我自己写的一个属性,该属性是通过点击空间中的按钮才会有值的。
大体是这样的 ,点击窗体文本框---显示用户控件---点击用户控件上的按钮生成一个值---窗体文本框显示用户控件的属性值。

请问该怎么处理?
很着急,高手帮忙解决。万分感激。成功+200分;

为属性添加事件
public partial class UserControl1 : UserControl

private string m_Value = "";

public event EventHandler OnValueChanged;
public string Value

get return this.m_Value;
set

this.m_Value = value;
if (OnValueChanged != null)

OnValueChanged(this, new EventArgs());



public UserControl1()

InitializeComponent();


private void button1_Click(object sender, EventArgs e)

this.Value = "TEST";


在窗体中使用添加的事件
this.userControl11.OnValueChanged += new System.EventHandler(this.userControl11_OnValueChanged);
在事件触发时调用自定义控件的属性就可以了

private void userControl11_OnValueChanged(object sender, EventArgs e)

this.textBox1.Text = this.userControl11.Value;

又是新建工程,新建用户控件的,记得给加分啊,呵呵
不懂再联系我
参考技术A 你那个用户控件应该有个接口吧,即让窗体进行调用,这个接口可以返回一个值啊 参考技术B this.TextBox1.Text = this.UserControl1.属性名;

以上是关于c# winform 如何实现16进制颜色值的转换的主要内容,如果未能解决你的问题,请参考以下文章

详细请教:关于十进制RGB颜色值转换十六进制颜色值的算法

JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换

js中如何把RGB颜色转换为16进制颜色

C++如何将使用16进制表达的颜色色彩RGB字符串转化为整型或者浮点型表达?(颜色转换色彩转换)

C#,WINFORM中如何实现类似WORD工具栏中选择颜色按钮的效果?

PHP里,16进制格式字符串,转换成具体值的方法