panel里的label背景问题。

haifeng39 2009-08-09 05:15:18
我把panel属性设置为显示滚动条,背景为Color.Transparent,然后在里面动态添加了许多label,背景也是Color.Transparent,现在问题是拖动滚动条的时候,label的背景就不是原来的位置的图像了,也就是不是透明的了。
我的方法是在panel的Scroll事件里 加一句 panel1.Refresh()就可以了。这个方法有一点不好就是在拖动滚动条的时候为有点闪。不知道高手们有没有好的办法?
...全文
138 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haifeng39 2009-08-11
  • 打赏
  • 举报
回复
up
yuanhuiqiao 2009-08-11
  • 打赏
  • 举报
回复
DoubleBuffer = true可以减少闪烁,就你所说的情况应该能管用。透明那块自己再看看是不是别的问题影响了,实在不行可以试试调用设置Transparent的API:SetLayeredWindowAttributes()。
flyerwing 2009-08-11
  • 打赏
  • 举报
回复
up!
haifeng39 2009-08-10
  • 打赏
  • 举报
回复
谢谢楼上两位,我试了this.DoubleBuffer = true; 不行。另外panel1.DoubleBuffer = true;panel是不能设置这个属性的。
mjp1234airen4385 2009-08-10
  • 打赏
  • 举报
回复
是假透明。
我怀疑,C#里的Label透明,不是用擦除背景的方式处理,
而是把Label所在的部分背景画到label上实现的。
试试 this.DoubleBuffer = true;
panel1.DoubleBuffer = true;
ddeng 2009-08-10
  • 打赏
  • 举报
回复
将Form的DoubleBuffered设置为true试试
haifeng39 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dylike 的回复:]
这种伪透明,是无法避免闪烁的.唯一的办法就是用假画面画.
[/Quote]

怎么用假画面画,能说清楚点吗?
dylike 2009-08-10
  • 打赏
  • 举报
回复
这种伪透明,是无法避免闪烁的.唯一的办法就是用假画面画.
dylike 2009-08-10
  • 打赏
  • 举报
回复
1 定义一张画布
2 将所有Label画到画布上
3 隐藏所有LABEL
4 完美解决
至于代码,我只会VB.NET.
yyhlian 2009-08-09
  • 打赏
  • 举报
回复

111,097

社区成员

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

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

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