当前位置:编程学习 > C#/ASP.NET >>

控件透明背景与容器背景不同步问题

首先容器控件我用的是FlowLayoutPanel 然后我自定义控件为透明背景 在我做滚动条事件时控件背景会与容器背景存在不同步的情况 请问如何解决? 另外已经试过双缓冲只能解决闪屏问题 刷新不同步不能解决 希望遇到过该问题的大神帮忙出出招  刷新,控件,背景 --------------------编程问答-------------------- 这恐怕不能简单地通过一个属性设置就能够解决。
如果背景没有图,就不设置为透明,手工设置为相同的颜色。
如果背景是图片,我觉得你应该自己处理控件和容器的Paint事件。
容器的自绘最简单:
private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(this.BackgroundImage,  e.ClipRectangle.Left,  e.ClipRectangle.Top ,e.ClipRectangle,GraphicsUnit.Pixel);
}
对于控件,事实上只需要对Label、radioButton这类控件进行自绘(不考虑按钮的话)。
自绘Label比较简单,你可以找找自绘radioButton的例子,比如:
http://www.csharpwin.com/csharpresource/731.shtml --------------------编程问答--------------------
引用 1 楼 u012592437 的回复:
这恐怕不能简单地通过一个属性设置就能够解决。
如果背景没有图,就不设置为透明,手工设置为相同的颜色。
如果背景是图片,我觉得你应该自己处理控件和容器的Paint事件。
容器的自绘最简单:
private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(this.BackgroundImage,  e.ClipRectangle.Left,  e.ClipRectangle.Top ,e.ClipRectangle,GraphicsUnit.Pixel);
}
对于控件,事实上只需要对Label、radioButton这类控件进行自绘(不考虑按钮的话)。
自绘Label比较简单,你可以找找自绘radioButton的例子,比如:
http://www.csharpwin.com/csharpresource/731.shtml
我容器里有大量的控件所以在拖动滚动条的时候如果重绘背景 会造成每个自定义控件背景的重绘(效果超级壮观)  我现在暂时是将自定义控件放入一个picturebox中并重写了picturebox禁止背景的刷新 可以做到控件背景不闪烁的问题  但是在移动滚动轮时 会产生图像风化的效果 整个Picturebox来不及刷新 快速滚动滑轮的时候格外明显 --------------------编程问答-------------------- 上个现在的问题图片 滚动条滑动的时候 重绘引起的问题 自定义控件让我放到一个picturebox上了防止控件透明背景刷新跟不上造成的闪烁
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,