VB中的RGB函数取得的颜色的整数,怎么在C#中转换成color类型?

penper 2003-07-22 06:20:21
我的代码如下,请指正或者听取高论。

int intBgColor=62580;
System.Drawing.Color newColor=System.Drawing.Color.FromArgb((int)Convert.ToInt32(intBgColor.ToString(),16));
p1.backColor=newColor;


运行后不是原来的颜色。
...全文
519 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Knight94 2003-07-24
  • 打赏
  • 举报
回复
由于以前的颜色是由RGB组成,那么
62580=0xF474
那么相应的颜色:
Red=0
Green=244
Blue=116

用其形成现在的ARGB的颜色格式,即
Color myColor=Color.FromArgb(0,244,116);

对于任意一个原来颜色,可以如下:
int nColor=62580;
int nBlue=nColor % 256;
int nGreen=((nColor-nBlue) / 256) % 256 ;
int nRed=(((nColor-nGreen*256-nBlue) / 256)/ 256) % 256;

Color yourNewColor=Color.FromArgb(nRed,nGreen,nBlue);
Knight94 2003-07-24
  • 打赏
  • 举报
回复
由于以前的颜色是由RGB组成,那么
62580=0xF474
那么相应的颜色:
Red=0
Green=244
Blue=116

用其形成现在的ARGB的颜色格式,即
Color myColor=Color.FromArgb(0,244,116);

对于任意一个原来颜色,可以如下:
int nColor=62580;
int nBlue=nColor % 256;
int nGreen=((nColor-nBlue) / 256) % 256 ;
int nRed=(((nColor-nGreen*256-nBlue) / 256)/ 256) % 256;

Color yourNewColor=Color.FromArgb(nRed,nGreen,nBlue);
wzs_wzs123 2003-07-24
  • 打赏
  • 举报
回复
我写的一个转换函数
private Color IntToColor(int rgb)
{
Color C=Color.FromArgb(rgb);
Color Result=Color.FromArgb(C.B,C.G,C.R);
return Result;
}
liduke 2003-07-23
  • 打赏
  • 举报
回复
System.Drawing.Color.FromArgb(255,intBgColor);
angelior 2003-07-23
  • 打赏
  • 举报
回复
UP
penper 2003-07-23
  • 打赏
  • 举报
回复
从一个 32 位 ARGB 值创建 Color 结构。

[Visual Basic] Overloads Public Shared Function FromArgb(Integer) As Color
[C#] public static Color FromArgb(int);
[C++] public: static Color FromArgb(int);
[JScript] public static function FromArgb(int) : Color;
从指定的 Color 结构创建 Color 结构,但要使用新指定的 alpha 值。尽管此方法允许为 alpha 值传递 32 位值,但该值仅限于 8 位。

[Visual Basic] Overloads Public Shared Function FromArgb(Integer, Color) As Color
[C#] public static Color FromArgb(int, Color);
[C++] public: static Color FromArgb(int, Color);
[JScript] public static function FromArgb(int, Color) : Color;
从指定的 8 位颜色值(红色、绿色和蓝色)创建 Color 结构。alpha 值默认为 255(完全不透明)。尽管此方法允许为每个颜色分量传递 32 位值,但每个分量的值仅限于 8 位。

[Visual Basic] Overloads Public Shared Function FromArgb(Integer, Integer, Integer) As Color
[C#] public static Color FromArgb(int, int, int);
[C++] public: static Color FromArgb(int, int, int);
[JScript] public static function FromArgb(int, int, int) : Color;
从四个 ARGB 分量(alpha、红色、绿色和蓝色)值创建 Color 结构。尽管此方法允许为每个分量传递 32 位值,但每个分量的值仅限于 8 位。

[Visual Basic] Overloads Public Shared Function FromArgb(Integer, Integer, Integer, Integer) As Color
[C#] public static Color FromArgb(int, int, int, int);



hahahawk(哈哈天使 CSharpOk.net)、liduke(天下有雪) ( ) 所说的参数出错。
hahahawk 2003-07-22
  • 打赏
  • 举报
回复
newColor=System.Drawing.Color.FromArgb(255,intBgColor);
即可。
wzs_wzs123 2003-07-22
  • 打赏
  • 举报
回复
RGB的顺序不一样,一个是RGB,一个是BGR
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-22 06:20
社区公告

让您成为最强悍的C#开发者