解决picture控件大小问题

rkdrc 2010-02-05 02:26:50
程序中使用picturebox控件绘制直方图,但随着数据量增大,直方图的数量很多难以辨别
如何固定直方图单个大小,当数据增加后超过picturebox长度后,显示滑动条,类似图片超过控件后显示滑动条,而图片本身大小不变
...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rkdrc 2010-02-05
  • 打赏
  • 举报
回复
谢谢,回去测试
PctGL 2010-02-05
  • 打赏
  • 举报
回复
坐标可以是固定的, 不需要改变坐标
PctGL 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 myjian 的回复:]
移动滚动条,只是改变"显示坐标",并重绘图象.
[/Quote]

lz 说的东西可以实现, 就象画出了画布,而画布似乎永远是无限大小,拉动滚动条就可以显示出那一部分
这个过程,可以由系统自动实现,lz 要做的就是再相关的位置画图
Andy韩 2010-02-05
  • 打赏
  • 举报
回复
我也有这方面的疑问啊!
cbm6666 2010-02-05
  • 打赏
  • 举报
回复
下面代码你可以参考 再自行改进

Picture2为你固定的PictureBox, Picture1是你的直方图,宽高度在你添加新图时,原图尺寸加上新添加的尺寸

"如何固定直方图单个大小,当数据增加后超过picturebox长度后,显示滑动条"

可以用这方法
VScroll1.Visible = Picture1.Height > Picture2.Height

添加 HScroll1 VScroll1 Picture1 Picture2


'***********************************************
Option Explicit
Private Sub Form_Load()
On Error Resume Next
VScroll1.Width = 350: HScroll1.Height = 350
Picture2.Move 225, 915: Set Picture1.Container = Picture2: Picture1.Move 0, 0
End Sub

Private Sub Form_Resize()
VScroll1.Max = (Picture1.Height - Picture2.ScaleHeight)
VScroll1.Move Me.Width - VScroll1.Width, Picture2.Top, VScroll1.Width, Picture2.Height
VScroll1.Visible = Picture1.Height > Picture2.Height
HScroll1.Max = (Picture1.Width - Picture2.ScaleWidth)
HScroll1.Move 0, Me.Height - HScroll1.Height, Picture2.Width, HScroll1.Height
HScroll1.Visible = Picture1.Width > Picture2.Width
HScroll1.Value = 0: VScroll1.Value = 0
VScroll1.LargeChange = Picture2.ScaleHeight
HScroll1.LargeChange = Picture2.ScaleWidth
VScroll1.SmallChange = 20: VScroll1.Min = 0
HScroll1.SmallChange = 20: HScroll1.Min = 0
End Sub

Private Sub hscroll1_Change()
Picture1.Left = -CLng(HScroll1.Value)
End Sub

Private Sub hscroll1_Scroll()
Picture1.Left = -CLng(HScroll1.Value)
End Sub

Private Sub vscroll1_Change()
Picture1.Top = -CLng(VScroll1.Value)
End Sub

Private Sub vscroll1_Scroll()
Picture1.Top = -CLng(VScroll1.Value)
End Sub

嗷嗷叫的老马 2010-02-05
  • 打赏
  • 举报
回复
思路:

拥有"窗口"与"画布"两个概念.

"窗口"本身的大小是固定的,或有限大小的.

而通过"窗口"去观看"画布",如果后者大于窗口,则需要多次移动画布或窗口,才能观看到全部的图象.

对于具体实现,你可以先得到"窗口"的大小,也就是图片框的实际大小,然后在绘图时,根据放大倍数计算出当前图象的极限坐标,这样就可以知道图象是否大于窗口.

然后,再根据当前的"显示坐标",得出需要显示在窗口中的部分,并绘制出来即可.

移动滚动条,只是改变"显示坐标",并重绘图象.

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧