我有一个Picturebox,我绘制了一个视图(在这种情况下是甘特图)并且它工作正常 - 即绘制视图并且AutoScroll属性允许PictureBox中的图像平滑滚动。
我的问题是,当我向下滚动图像时,图像的标题(例如,在这种情况下为日期标题)滚动显示的顶部。
我能解决的问题是如何将标题修复到顶部。我想过简单地将标题绘制到另一个Picturebox中,但后来我不确定如何将标题与主PictureBox的左右滚动同步
有人可以建议处理此问题的最佳方法,还是我需要恢复直接绘制并自行处理滚动?
我在VS 2015中使用VB。
非常感谢
菲尔
更新 - 我现在正在使用屏幕外的位图,但有人可以查看下面的代码并告诉我是否有更快/更好的方法来执行此操作?这一切都有效,但仍在学习,所以总是希望以最好的方式做事
Public Sub MoveViewPoint(G As Graphics)
' G passed in from controls Paint
G.Clear(Color.WhiteSmoke)
' _Plan is off-screen bitmap of image
' _HeaderHeight is height of the Header area in _Plan
Dim Header_src_rect As New Rectangle(_HScroll.Value, 0, _Plan.Width, _HeaderHeight)
Dim Header_dst_rect As New Rectangle(0, 0, _Plan.Width, _HeaderHeight)
G.DrawImage(_Plan, Header_dst_rect, Header_src_rect, GraphicsUnit.Pixel)
Dim src_rect As New Rectangle(_HScroll.Value, _HeaderHeight + 1 + _VScroll.Value, _Plan.Width, _Plan.Height)
Dim dst_rect As New Rectangle(0, _HeaderHeight + 1, _Plan.Width, _Plan.Height)
G.DrawImage(_Plan, dst_rect, src_rect, GraphicsUnit.Pixel)
_HScroll.LargeChange = G.ClipBounds.Width * 0.9
_VScroll.LargeChange = G.ClipBounds.Height * 0.9
End Sub
答案 0 :(得分:0)
我会使用GDI图形系统将所有绘图绘制到离屏位图。您可以将标题和图表的其余部分绘制为同一位图中的2个不同阶段。您必须通过观察MouseMove事件并检查按钮状态来自己处理滚动。