砍!坐标单位是 象素 叫烦?!坐标单位是 Twip 才叫烦!VB为什么不默认以象素为单位,还得我每次用PictureBox都要设置它的ScaleMode 属性

解决方案 »

  1.   

    commandbutton控件的坐标单位只能是Twip,怎么跟象素统一啊??
    就是当commandbutton控件发生mousedown事件时,返回坐标是以Twip为单位的,
    怎么改成象素呢??
    你教我了!!!!!!
      

  2.   


    ScaleX、ScaleY 方法
          用以将 Form,PictureBox 或 Printer 的宽度或高度值从一种 ScaleMode 属性的度量单位转换到另一种。不支持命名参数。语法object.ScaleX (width, fromscale, toscale)object.ScaleY (height, fromscale, toscale)ScaleX 和 ScaleY 方法的语法包含如下部分:部分 描述 
    object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点的 Form 对象缺省为 object。 
    width 必需的。为 object 指定被转换的度量单位的数量。 
    height 必需的。为 object 指定被转换的度量单位的数量。  
    fromscale 可选的。一个常数或数值,按照下列设置中的描述,指定 object 的 width 或 height 从哪一种坐标系统转换。fromscale 可取的数值与 ScaleMode 属性的数值加上 HiMetric 的新数值相同。 
    toscale 可选的。一个常数或数值,按照下列“设置值”中的描述,指定 object 的 width 或 height 转换到哪一种坐标系统。toscale 可取的数值与 ScaleMode 属性的数值加上 HiMetric 的新数值相同。 
    设置值用于 fromscale 和 toscale 设置值有:常数 值 描述 
    vbUser 0 用户定义:指示 object 的宽度和高度设置为自定义值。 
    vbTwips 1 缇(每逻辑英寸 1440 缇;每逻辑厘米 567 缇)。 
    vbPoints 2 磅(每逻辑英寸 72 点)。 
    vbPixels 3 像素 (显示器或打印机分辨率的最小单位)。 
    vbCharacters 4 字符(水平 = 每单位 120 缇,垂直 = 每单位 240 缇)。 
    vbInches 5 英寸 
    vbMillimeters 6 毫米 
    vbCentimeters 7 厘米 
    vbHimetric 8 HiMetric。如果省略 fromscale,则 HiMetric 为缺省值。 
    vbContainerPosition 9 决定控件位置。 
    vbContainerSize 10 决定控件大小。 
    说明ScaleX 和 ScaleY 方法按 fromscale 指定的度量单位取值(width 或 height),并将它转换为 toscale 指定的度量单位下相应的值。也可以结合 PaintPicture 方法使用 ScaleX 和 ScaleY。
    ====================================================================
    ClientToScreen VB声明 
    Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 
    说明 
    判断窗口内以客户区坐标表示的一个点的屏幕坐标 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    hwnd Long,判断客户区坐标时那个窗口的句柄 
    lpPoint POINTAPI,用hwnd窗口的客户区坐标表示的点,这个参数会包含屏幕坐标系统中相同的点 
    ====================================================================
    ScreenToClient VB声明 
    Declare Function ScreenToClient Lib "user32" Alias "ScreenToClient" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 
    说明 
    判断屏幕上一个指定点的客户区坐标 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    hwnd Long,一个窗口的句柄,该窗口定义了要使用的客户区坐标系统 
    lpPoint POINTAPI,屏幕坐标系统中包含了屏幕点的结构。这个函数会随同相应的客户区坐标(由hwnd决定)载入结构 
      

  3.   

    象素 与 Twip 的转换系数是screen.TwipsPerPixelX 和screen.TwipsPerPixelX 转换一下不就得了吗。但SetCursorPos是必须得有象素为单位的。
    而且象素确实比 Twip 方便多了。
      

  4.   

    SetCursorPos中XY的值:
    Y=screen.height/screen.TwipsPerPixelY
    X=screen.width/screen.TwipsPerPixelX