◆如何清除Panel已绘制的渐变背景色,好像没有问过的问题◆
panel上有部分透明的背景图,绘制一个背景颜色渐变,圆角的形状,实现鼠标经过就显示颜色渐变圆角,鼠标离开就恢复原状(只有背景图,没有渐变颜色圆角)
如下的NowPaint1是实现绘制一个背景颜色渐变,圆角的形状,鼠标经过时执行NowPaint1能显示我要的效果
如下的NowPaint2是想实现鼠标离开恢复原状,但没有成功,请高手帮忙
- C# code
private void NowPaint1() { Rectangle rec = new Rectangle(0, 0, panel1.Width, panel1.Height); GraphicsPath round = CreateRound(rec, 10 * 2); Graphics gp = panel1.CreateGraphics(); Brush b = new LinearGradientBrush(rec, Color.Blue, Color.Red, LinearGradientMode.Vertical); gp.FillPath(b, round); Image im = panel1.BackgroundImage; if (im != null) gp.DrawImage(im, new Point(0, 0)); } private void NowPaint2() { //在这里如何清空已经绘制的图 panel1.BackColor = Color.Transparent; } private GraphicsPath CreateRound(Rectangle rect, int radius) //画圆角 { GraphicsPath roundRect = new GraphicsPath(); roundRect.AddArc(rect.Right - radius, rect.Top, radius, radius, 270, 90);//右上角 roundRect.AddArc(rect.Right - 1 - radius, rect.Bottom - 1 - radius, radius, radius, 0, 90);//右下角 roundRect.AddArc(rect.Left - 1, rect.Bottom - 1 - radius, radius, radius, 90, 90);//左下角 roundRect.AddArc(rect.Left, rect.Top, radius, radius, 180, 90);//左上角 return roundRect; }
[解决办法]
有一个变通的解决方法,再画一个和panle背景色一样的填充。。。。
[解决办法]
panel1.Invalidagte()
[解决办法]
[解决办法]
代码写错地方了。
Graphics gp = panel1.CreateGraphics();
绘制的代码应该写在onpaint这个事件或方法里。
graphics g=e.g.
[解决办法]
楼主的方法行不通 图片会把渐变的背景挡住