有个地图,可以放大缩小移动,上面有些指示按钮,如同Google地图一样,
当地图放大时,如何同时调节按钮的位置,保持与地图的相对位置不变。
我的思路是以像素点做按钮的坐标,求救高手。
当地图放大时,如何同时调节按钮的位置,保持与地图的相对位置不变。
我的思路是以像素点做按钮的坐标,求救高手。
解决方案 »
- VB显示Excel的源代码
- 窗口调用的问题,好难
- 如何让每个窗体的标题栏都显示 ( 当前用户:user ) user 是登陆窗体时输得用户名
- 关于VB打印的问题
- 各位大哥,小弟刚刚开始使用vb,这里有个问题想请教各位,很急很急
- 请教教小弟,VB里如何实现这个功能^_^(实现,马上给分)
- 如何改变statusbar的长度?
- 默认生成excel文件名为book1,怎么改为其他名字,如book2?
- VB 图象处理的问题
- 征求10进制到2进制的vb程序
- 我已经知道某网页元素的tag,name,id,value,type等参数。如何用DOM的函数定位该元素,然后用DOM的函数.click点击它?
- 哪位朋友给小弟讲讲这段代码的意思?
Option Explicit
Private FormOldWidth As Long '保存窗体的原始宽度
Private FormOldHeight As Long '保存窗体的原始高度
'在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As Form)
Dim Obj As Control
FormOldWidth = FormName.ScaleWidth'记录窗体的原始宽度
FormOldHeight = FormName.ScaleHeight'记录窗体的原始高度
On Error Resume Next
For Each Obj In FormName
Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
Next Obj
On Error GoTo 0
End Sub
'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)
Dim Pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double
'在调试时如果出现除数为零错误,是因为没有设定form的初值,请双击form1然后再测试,这个问题绝对不会在编译好的程序中出现
If FormOldWidth = 0 Then '防止该错误的产生
Exit Sub
End If
ScaleX = FormName.ScaleWidth / FormOldWidth '保存窗体宽度缩放比例
ScaleY = FormName.ScaleHeight / FormOldHeight '保存窗体高度缩放比例
On Error Resume Next
For Each Obj In FormName
StartPos = 1
For i = 0 To 4
'读取控件的原始位置与大小
TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
If TempPos > 0 Then
Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
Pos(i) = 0
End If
'根据控件的原始位置及窗体改变大小
'按比例对控件重新定位与改变大小
Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Next i
Next Obj
On Error GoTo 0
End Sub
'窗体代码:
Option Explicit
Private Sub Form_Load()
ResizeInit Me
End Sub
Private Sub Form_Resize()
ResizeForm Me
End Sub
我也是找人要的.我调试很好使.你试试.
Top6 楼faysky2(
----------------------------------
借鉴这个解决,进行中
leftratio = 0.6
topratio = 0.3signleft = newleft + newwidth * leftratio
signtop = newtop + newheight * topratio
Image2.Move signleft, signtop, 350, 350
End Sub
搞定了,谢谢SYSSZ(老张)提到的比例二字