使用垂直滚动时,表单绘制事件无法正确绘制

时间:2015-05-23 19:37:39

标签: c# winforms

我有一个接受数据的表单,根据输入的数据,它将打开另一个表单并绘制我已包含在其适当位置的图像。我成功了。我限制了它允许绘制的水平空间量,所以一旦达到某个点,它就会开始绘制在前面的图像之下,直到代码告诉它不要绘制任何其他内容。

我遇到的问题是我希望能够垂直绘制无限量的图像,并使用垂直滚动条查看下面的图像是否被截断。发生的事情是,当我向下滚动时,图像不会被绘制,这几乎就像它们被切断一样。如果我快速向下滚动,我会看到所有绘制的东西,但它们全部被混合在一起。我希望它的行为就像使用我现在输入的这个文本框来编写这个问题,一旦这个文本框填满了容量,滚动条就会变大,然后我可以向上或向下滚动以查看其余的的内容。此表单不可调整大小,这就是我想保留它的方式。

我不确定我的代码的哪一部分要包含,因为所有内容都已正确绘制并且位于正确的位置,只是当我向上或向下滚动时才会出现问题。

我的所有绘图代码都在paint事件中。我使用e.Graphics.DrawImage()绘制,图像来自我创建的文件。

我已经设置了这些属性:

// on the form 

this.AutoScroll = true 

// after everything has been painted and inside the paint event

this.AutoScrollMinSize = new Size(totalHeightOfDrawnImages, widthOfForm) 

连连呢?我已经在这里查看了很多链接,要么我不理解修复它的建议,并且无法使其正常工作,或者它们根本不适用于我的情况。

1 个答案:

答案 0 :(得分:-1)

PictureBox渲染效果好于Form。

调整表单的高度并按原样滚动边框。

将PictureBox控件放到表单中。

调整pictureBox的大小以包含您的所有内容。

将Form的Paint事件迁移到PictureBox。