在窗体OnPaint事件内重绘窗体颜色时发生的问题
在效果截图中大家可以看见,当我将重绘了窗体颜色的窗体拖至停靠控件出现的小方格上后,移开窗体,窗体上就出现了小方格的阴影...
不知如何去掉这个移动时产生的效果
重绘代码如下:
protected override void OnPaint(PaintEventArgs e)
{
Rectangle rect = e.ClipRectangle;
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;
BufferedGraphics myBuffer = currentContext.Allocate(e.Graphics, e.ClipRectangle);
Graphics g = myBuffer.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
g.Clear(Color.Transparent);
Brush backbrush =
new LinearGradientBrush(rect, Color.White, Color.FromArgb(125,125,125),LinearGradientMode.Vertical);
g.FillRectangle(backbrush, rect);
myBuffer.Render(e.Graphics);
g.Dispose();
backbrush.Dispose();
myBuffer.Dispose();
base.OnPaint(e);
}
private void Form1_Load(object sender, EventArgs e)
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.AllPaintingInWmPaint, true);
}
效果截图顺序: 一开始.bmp → 拖动窗体至停靠小方格所在位置.bmp → 放开窗体.bmp → 将窗体由停靠小方格所在位置移开.bmp