【发布时间】:2016-05-23 11:54:15
【问题描述】:
我有一个面板,我需要在上面绘制一个水平图表。但有时图表对于面板来说可能太长,即使表格有最大尺寸。所以我想在面板上做一个水平条,让用户可以看到超出范围的绘图的剩余部分。
图表是这样的:
如您所见,图表超出了面板和表单的范围。我不知道怎么做,所以我没有代码可以显示。那么如何使用基本的方法呢?
【问题讨论】:
我有一个面板,我需要在上面绘制一个水平图表。但有时图表对于面板来说可能太长,即使表格有最大尺寸。所以我想在面板上做一个水平条,让用户可以看到超出范围的绘图的剩余部分。
图表是这样的:
如您所见,图表超出了面板和表单的范围。我不知道怎么做,所以我没有代码可以显示。那么如何使用基本的方法呢?
【问题讨论】:
是的,解决方案很简单,只要你要绘制的尺寸不超过 32k 像素宽度:
Panel 放入另一个邮箱。 Panel有AutoScroll=true
Paint 事件中进行绘制,无论如何您都应该这样做 (!)现在外部Panel 显示一个水平滚动条,用户可以左右滚动并查看绘图的所有部分..
另一种选择是添加一个虚拟控件,该控件强制您的绘图 Panel 的 AutoScroll 工作,但我发现使用两个 Panels 更简洁..
注意:您应该使用PictureBox 或至少使用双缓冲Panel 子类来避免闪烁和撕裂:
class DrawPanel : Panel
{
public DrawPanel()
{ DoubleBuffered = true; }
}
更新: 可以使用 Picturebox 或 Label(与 Autosize=false );两者都具有开箱即用的DoubleBuffered 属性,并且比Panels 更支持绘图。
【讨论】: