拖动滚动条后图像不对了
写了段代码单击窗体后画一个矩形和一个圆窗体的AutoScrollMinSize为(400,400)主要代码如下:
his.AutoScroll = true;
this.AutoScrollMinSize = new System.Drawing.Size(400, 400);
private void Form1_Click(object sender,EventArgs e)
{
Graphics g1 = this.CreateGraphics();
g1.DrawRectangle(pen, 0, 0, 200, 200);
g1.DrawEllipse(pen, 200, 200, 200, 200);
}
为什么拖动滚动条后,图像就变得乱了,但是缩小放大后图像没有变化,怎么会这样呢?请高手解释问题产生的原因,该如何解决问题,谢谢。
------解决方案--------------------g1.DrawRectangle(Pens.Red, AutoScrollPosition.X, AutoScrollPosition.Y, 200 + AutoScrollPosition.X, 200 + AutoScrollPosition.Y);
g1.DrawEllipse(Pens.Red, AutoScrollPosition.X + 200, AutoScrollPosition.Y + 200, 200, 200);
再加上 private void Form1_Scroll(object sender, ScrollEventArgs e)
{
Invalidate(ClientRectangle);
}
这是因为你点滚动条后 客户区还是原来的客户区 (0,0)仍为于你所看到的左上角 而不会运动到屏幕外
------解决方案--------------------1:没有必要在Form1_Scroll事件里使用Invalidate(ClientRectangle);
2:你可以对控件在构造函数里如下设置:
this.SetStyle(ControlStyles.ResizeRedraw, true);