c#窗体渐变效果?

qq_33312212 2016-02-12 11:28:03
我这样写,可是窗体还是隔一会一下子出来,完全没渐变效果,求大神指教
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33312212 2016-02-12
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你必须把主线程交给人家窗体底层去继续执行,界面才能真正去渲染。你的 timer_tick 方法不执行完,界面是不会渲染的。 定时器本身是50毫秒执行一次,那么每一次执行时将不透明度增加10%,直到 >= 1 为止,总共需要执行10次 timer_tick 方法,最后一次才会使得 timer1.Enabled 设置为 false。 而你的程序的逻辑是仅仅总共执行一次 timer_tick,只要执行 timer_tick 就赋值 false。这个流程是错误的。
请问怎么写啊?
  • 打赏
  • 举报
回复
你必须把主线程交给人家窗体底层去继续执行,界面才能真正去渲染。你的 timer_tick 方法不执行完,界面是不会渲染的。 定时器本身是50毫秒执行一次,那么每一次执行时将不透明度增加10%,直到 >= 1 为止,总共需要执行10次 timer_tick 方法,最后一次才会使得 timer1.Enabled 设置为 false。 而你的程序的逻辑是仅仅总共执行一次 timer_tick,只要执行 timer_tick 就赋值 false。这个流程是错误的。
john_QQ:2335298917 2016-02-12
  • 打赏
  • 举报
回复
把一个 opacity_var设为类的变量,初值为0,类型为int,然后再timer_tick里面这样写
private void time1_Tick(object sender, EventArgs e)
{
    opacity_var +=1;
    this.opacity =((double) opacity_var)/10;
    invalidate();
    if(opacity==10)
    { timer1.Enabled=false;}
}
  • 打赏
  • 举报
回复
引用 4 楼 qq_33312212 的回复:
我的代码里有while循环,如果是只执行了一次的话,
谁说过“你的代码只执行一次,就是while循环里的代码反而不去执行循环而会自动中断”呢?你只是匹配一些自己眼熟的字眼儿,而不走心地学习编程,我也没什么办法了。 编程之前先要学习抛开代码、画个流程图。走点心!如果你画好流程图,贴出来让别人帮你看看画得对不对,再动手编写代码。分步骤学习,不要一下子就学习写代码。
qq_33312212 2016-02-12
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
中间一段已经说了。代码你应该自己设计,而别人只能告诉你应该实现什么流程。流程都说得这么具体了,自己还不设计代码吗?
大神,可是我还是有问题。我的代码里有while循环,如果是只执行了一次的话,我应该看到透明度0.1的界面啊,然而,是一下子出来一个100%的??
  • 打赏
  • 举报
回复
中间一段已经说了。代码你应该自己设计,而别人只能告诉你应该实现什么流程。流程都说得这么具体了,自己还不设计代码吗?

110,538

社区成员

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

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

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