我在.net框架中用C#编写图表控件。我基本上有一个分割面板,我在一边写名字,另一边绘制矩形,用于控件的实际图形部分。但是,我已经意识到每次向下滚动时,它都会擦除从面板视图中移出的矩形部分。我该如何防止这种情况?
附带问题,如何让第二个面板的滚动条适用于两者。我对其中的一些内容相当新,所以如果这里的任何内容相当基本或已经回答,我会道歉。谢谢你的时间!
答案 0 :(得分:0)
有趣的是,关于滚动的问题的答案实际上将解决绘图问题。解决方案是添加第3个面板,AutoScroll
设置为true。然后将现有的两个面板放在那个面板中。不要停靠它们,而是将它们设置为全尺寸。父面板的滚动条将滚动它们并指示它们根据需要重新绘制。
另见this answer。最好从Panel派生自己的类并绘制它。
为了将来参考,当您直接在AutoScroll
面板上绘图时,请使用TranslateTransform
来考虑滚动。这解决了我的绘图问题:
private void Panel1_Paint(object sender, PaintEventArgs e) {
e.Graphics.TranslateTransform(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y);
// draw something...
}