在picture控件里画图,怎么进行放大,缩小,利用滚动条滚动
在picture控件里画图,如何进行放大,缩小,利用滚动条滚动
这个图是用一个picture控件画的。现在想利用按钮或鼠标滚轮将它放大,缩小,放大后可利用滚动条对他进行查看,怎么做啊。
大家帮想想办法,不胜感激.
------解决方案--------------------
这个图是用一个picture控件画的。现在想利用按钮或鼠标滚轮将它放大,缩小,放大后可利用滚动条对他进行查看,怎么做啊。
大家帮想想办法,不胜感激.
------解决方案--------------------
- VB code
Option Explicit Private Type POINTAPI X As Long Y As Long End Type Dim A(38) As POINTAPI Dim lngTopX As Long Dim lngTopY As Long Dim lngBottomX As Long Dim lngBottomY As Long '原始比例绘制曲线 Private Sub Command1_Click() Dim intP As Integer Picture1.AutoRedraw = True Picture1.ScaleMode = vbPixels Picture1.DrawMode = 13 lngTopX = -1 lngTopY = 400 lngBottomX = 900 lngBottomY = -1 Picture1.Scale (lngTopX, lngTopY)-(lngBottomX, lngBottomY) '定义坐标系统 For intP = LBound(A) To UBound(A) - 1 Picture1.Line (A(intP).X, A(intP).Y)-(A(intP + 1).X, A(intP + 1).Y) Next intP End Sub '缩小5倍显示 Private Sub Command2_Click() Dim intP As Integer Picture1.Cls Picture1.AutoRedraw = True Picture1.ScaleMode = vbPixels Picture1.DrawMode = 13 lngTopX = lngTopX * 5 lngTopY = lngTopY * 5 lngBottomX = lngBottomX * 5 lngBottomY = lngBottomY * 5 Picture1.Scale (lngTopX, lngTopY)-(lngBottomX, lngBottomY) '定义坐标系统 For intP = LBound(A) To UBound(A) - 1 Picture1.Line (A(intP).X, A(intP).Y)-(A(intP + 1).X, A(intP + 1).Y) Next intP End Sub '放大5倍显示 Private Sub Command3_Click() Dim intP As Integer Picture1.Cls Picture1.AutoRedraw = True Picture1.ScaleMode = vbPixels Picture1.DrawMode = 13 lngTopX = lngTopX / 5 lngTopY = lngTopY / 5 lngBottomX = lngBottomX / 5 lngBottomY = lngBottomY / 5 Picture1.Scale (lngTopX, lngTopY)-(lngBottomX, lngBottomY) '定义坐标系统 For intP = LBound(A) To UBound(A) - 1 Picture1.Line (A(intP).X, A(intP).Y)-(A(intP + 1).X, A(intP + 1).Y) Next intP End Sub Private Sub Form_Load() A(0).X = 88: A(0).Y = 335 A(1).X = 112: A(1).Y = 312 A(2).X = 135: A(2).Y = 290 A(3).X = 158: A(3).Y = 270 A(4).X = 182: A(4).Y = 250 A(5).X = 205: A(5).Y = 232 A(6).X = 227: A(6).Y = 215 A(7).X = 250: A(7).Y = 200 A(8).X = 272: A(8).Y = 186 A(9).X = 295: A(9).Y = 173 A(10).X = 317: A(10).Y = 161 A(11).X = 338: A(11).Y = 150 A(12).X = 360: A(12).Y = 141 A(13).X = 382: A(13).Y = 132 A(14).X = 403: A(14).Y = 125 A(15).X = 424: A(15).Y = 119 A(16).X = 445: A(16).Y = 114 A(17).X = 466: A(17).Y = 111 A(18).X = 487: A(18).Y = 108 A(19).X = 508: A(19).Y = 107 A(20).X = 528: A(20).Y = 106 A(21).X = 548: A(21).Y = 107 A(22).X = 568: A(22).Y = 109 A(23).X = 588: A(23).Y = 112 A(24).X = 608: A(24).Y = 116 A(25).X = 628: A(25).Y = 121 A(26).X = 647: A(26).Y = 127 A(27).X = 666: A(27).Y = 135 A(28).X = 686: A(28).Y = 143 A(29).X = 705: A(29).Y = 152 A(30).X = 723: A(30).Y = 163 A(31).X = 742: A(31).Y = 174 A(32).X = 761: A(32).Y = 187 A(33).X = 779: A(33).Y = 200 A(34).X = 797: A(34).Y = 215 A(35).X = 816: A(35).Y = 230 A(36).X = 834: A(36).Y = 246 A(37).X = 851: A(37).Y = 264 A(38).X = 869: A(38).Y = 282 End Sub
------解决方案--------------------
用两个PictureBox,载图的那个做背景的那个的儿子,在背景的那个里边加滚动条,载图的那个可以直接放大缩小,然后用painpicture方法放大缩小图,移动载图的那个PictureBox的top、left属性来配合滚动条。