.net中如何缓慢更改控件属性

翛然 2012-05-13 12:54:56
我正在做一个程序,其中有更改软件皮肤这一部分,想实现的效果是:当皮肤的颜色从一种颜色到另一种颜色的时候,能够缓慢过渡,这样看起来比较舒服
...全文
135 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2012-05-14
  • 打赏
  • 举报
回复
当然也有快速搞法

int intColor = (colTemp.B << 16) | (colTemp.G << 8) | colTemp.R;

反向转换同理
wanghui0380 2012-05-14
  • 打赏
  • 举报
回复
给你的例子把
颜色A RGB(200,128,20)
颜色B RGB(255,0,0)

实际上你可以看的出来这种表示方法其实是一个256进制表示

那么颜色A的10进制表示 就是 200*256^2+128*256+20=13139988
颜色B的10进制表示:255*256^2=16711680

那么你想渐变过渡其实只需要 从13139988到16711680做一个循环就行了,至于步长你自己看着办吧

lilei_new 2012-05-14
  • 打赏
  • 举报
回复
比如从RGB(200,128,020)过渡至RGB(255,0,0)需要把128和20以次减1至0.这样看到的效果就是过渡色
wocaleia 2012-05-14
  • 打赏
  • 举报
回复
可以用一个定时器跟踪
wanghui0380 2012-05-14
  • 打赏
  • 举报
回复
//color转10进制
uint ParseRGB(Color color)
{
return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8) | color.R));
}
//10进制转color
Color RGB(int color)
{
int r = 0xFF & color;
int g = 0xFF00 & color;
g >>= 8;
int b = 0xFF0000 & color;
b >>= 16;
return Color.FromArgb(r, g, b);
}
tommir3 2012-05-14
  • 打赏
  • 举报
回复
时间控件控制。
其实我是来蹭分的。。
翛然 2012-05-14
  • 打赏
  • 举报
回复
再次感谢大家的帮助
翛然 2012-05-14
  • 打赏
  • 举报
回复
5楼的方法,我正在尝试,貌似c#中不能用转换过来的十进制去表示颜色哎
翛然 2012-05-14
  • 打赏
  • 举报
回复
4楼的提及的使用Timer方法我也想到过,可简单地去减小或增大R,G,B的值,是不符合渐变规律
threenewbee 2012-05-13
  • 打赏
  • 举报
回复
使用一个定时器不断改变。
翛然 2012-05-13
  • 打赏
  • 举报
回复
你说的我懂,看来你没明白我的意思,不过还是要谢谢。其实我想说的是从一种颜色过渡到另一种颜色时,不要太生硬。
wanghui0380 2012-05-13
  • 打赏
  • 举报
回复
你知道颜色没标准化成了RGB三色

ok你想做渐变,也只是需要更改这rgb3三色的数字就可以

实际上一般软件的里的渐变色都是这么玩滴

我不多说了,自己google"c# 渐变色"

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧