要不使用相对坐标,要不使用绝对坐标,否则是位置是不对的。欢迎访问小弟的网站:
http://www.aslike.net

解决方案 »

  1.   

    这是MicroSoft自作聪明的把VB的默认坐标单位设为TwipsAPI函数都是用标准的Pixel坐标
    设置ScaleMode属性为VbPixelsScaleMode 属性
          当使用图形方法或调整控件位置时,返回或设置一个值,该值指示对象坐标的度量单位。语法object.ScaleMode [= value]ScaleMode 属性的语法包含下面部分:部分 描述 
    Object 对象表达式,其值是“应用于”列表中的一个对象。 
    Value 一个指定度量单位的整数,“设置值”中有详细描述。 
    设置值value 的设置值为:常数 设置值 描述 
    VbUser 0 指出 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性中的一个或多个被设置为自定义的值。 
    VbTwips 1 (缺省值)缇(每逻辑英寸为 1440 缇;每逻辑厘米为 567 个缇)。 
    VbPoints 2 磅(每逻辑英寸为 72 个磅)。 
    VbPixels 3 像素(监视器或打印机分辨率的最小单位)。 
    VbCharacters 4 字符(水平每个单位=120 缇;垂直每个单位=240 缇。) 
    VbInches 5 英寸。 
    VbMillimeters 6 毫米。 
    VbCentimeters 7 厘米。 
    VbHimetric 8 HiMetric 
    VbContainerPosition 9 控件容器使用的单位,决定控件位置。 
    VbContainerSize 10 控件容器使用的单位,决定控件的大小。 
    说明相关的 ScaleHeight、ScaleWidth、ScaleLeft 与 ScaleTop 属性的使用,可以建立起一个带有正、负坐标的自定义坐标系统。这四个 Scale 属性与 ScaleMode 属性按下面的方式进行交互作用: 把其它任何 Scale 属性设置为任何值都将 ScaleMode 自动地设置为 0。ScaleMode 等于 0 是用户定义。
    把 ScaleMode 属性设置为一个大于 0 的数,将使 ScaleHeight 和 ScaleWidth 的度量单位发生改变,并将 ScaleLeft 和 ScaleTop 设置为 0。CurrentX 和 CurrentY的设置值将发生改变以反映当前点的新坐标。 
    ScaleMode 属性示例
    本例显示不同的 ScaleMode 属性设置值是如何改变圆的大小的。要试用此例,先将下面的代码粘贴到窗体的声明部分,然后按 F5 键 并单击窗体。单击窗体时,度量单位将改变为下一个 ScaleMode 设置值并在窗体上画一个圆。Private Sub Form_Click ()
       ' 在七个“ScaleMode”设置值中循环。
       ScaleMode = ((ScaleMode + 1) Mod 7) + 1
       ' 在窗体的中心处画一个半径为 2 的圆。
       Circle (ScaleWidth / 2, ScaleHeight / 2), 2
    End Sub