要个代码例子!!

解决方案 »

  1.   

    SetWorldTransform VB声明 
    Declare Function SetWorldTransform Lib "gdi32" Alias "SetWorldTransform" (ByVal hdc As Long, lpXform As xform) As Long 
    说明 
    设置世界转换 
    返回值 
    Long,执行成功为非零值,失败为0 
    参数表 
    参数 类型及说明 
    hdc Long,设备场景 
    lpXform xform,一个包含将用世界转换的结构 
    注解 
    适用于Windows NT 
    在使用世界转换前必须调用SetGraphicsMode函数设置图形模式为GM_ADVANCED模式
     
      

  2.   

    这个我看过,但是XFORM怎设置才有效果呢?
      

  3.   

    XFORM怎设置才有效果呢?
    -----------------------
    那就是一个几何学问题了。世界转换的算法是,
    x' = x * eM11 + y * eM21 + eDx
    y' = x * eM12 + y * eM22 + eDyx', y'  转换后的坐标
    x , y   转换前的坐标(以上都是从 MSDN 抄的,详见 msdn.microsoft.com)
      

  4.   

    '一个例子:
    '所有图形都被切变,并且旋转了 45 度。
    '只能在 Windows NT 3.51+, 2000, XP, 及其它基于 Windows NT 的系统上运行。Option ExplicitPrivate Type XFORM
            eM11 As Single
            eM12 As Single
            eM21 As Single
            eM22 As Single
            eDx As Single
            eDy As Single
    End Type
    Private Declare Function SetWorldTransform Lib "gdi32" (ByVal hdc As Long, lpXform As XFORM) As Long
    Private Declare Function CombineTransform Lib "gdi32" (lpxformResult As XFORM, lpxform1 As XFORM, lpxform2 As XFORM) As Long
    Private Const GM_ADVANCED = 2
    Private Declare Function SetGraphicsMode Lib "gdi32" (ByVal hdc As Long, ByVal iMode As Long) As Long
    Private Const PI = 3.14159265358979
    Private Const ROTATE_ANGLE = PI / 4#Private Sub Form_Load()
      Dim xf As XFORM, xf2 As XFORM
      Me.ScaleMode = vbPixels
      SetGraphicsMode Me.hdc, GM_ADVANCED
      With xf
        .eM11 = 1
        .eM12 = 0
        .eM21 = -0.4
        .eM22 = 1
      End With
      With xf2
        .eM11 = CSng(Cos(ROTATE_ANGLE))
        .eM12 = CSng(Sin(ROTATE_ANGLE))
        .eM21 = -.eM12
        .eM22 = .eM11
        .eDx = 170
        .eDy = -30
      End With
      CombineTransform xf, xf, xf2
      SetWorldTransform Me.hdc, xf
    End SubPrivate Sub Form_Paint()
      Me.Line (75, 75)-(150, 150), , B
    End Sub