Dim TemphDC As Long
Dim TemphPen As Long
Dim OldhPen As Long
Dim TempP as POINTAPITemphDC=GetDC(Frm1.hWnd)
TemphPen=CreatePen(PS_SOLID, 1, QBColor(1))
OldhPen=SelectObject(TemphDC, TemphPen)
Call MoveToEx(TemphDC, 0, 0, TempP)
Call LineTo(TemphDC, 100, 100)
Call SelectObject(TemphDC, OldhPen)
Call DeleteObject(TemphPen)
Call ReleaseDC(Frm1.hWnd, TemphDC)

解决方案 »

  1.   

    I have Written the Function,but Thank you very much anywhere !
      

  2.   

    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private Declare Function PolyBezier Lib "gdi32.dll" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
    Private Declare Function PolyBezierTo Lib "gdi32.dll" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
    Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Any) As Long
    Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Declare Function PolyPolygon Lib "gdi32.dll" (ByVal hdc As Long, lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long) As Long
    Private Sub Form_Paint()
        Dim pts(0 To 6) As POINTAPI
        Dim numpoints(0 To 1) As Long
        'set the co鰎dinates
        pts(0).x = 0: pts(0).y = 100
        pts(1).x = 125: pts(1).y = 75
        pts(2).x = 255: pts(2).y = 148
        pts(3).x = 219: pts(3).y = 199
        pts(4).x = 315: pts(4).y = 203
        pts(5).x = 236: pts(5).y = 16
        pts(6).x = 122: pts(6).y = 123
        'set the forecolor to green
        Me.ForeColor = vbGreen
        'draw the b閦ier
        PolyBezier Me.hdc, pts(0), 7
        'set the forecolor to red
        Me.ForeColor = vbRed
        'move the 'active' point
        MoveToEx Me.hdc, 200, 25, ByVal 0&
        'set the co鰎dinates
        pts(0).x = 125: pts(0).y = 50
        pts(1).x = 123: pts(1).y = 200
        pts(2).x = 102: pts(2).y = 100
        pts(3).x = 102: pts(3).y = 100
        pts(4).x = 312: pts(4).y = 75
        pts(5).x = 289: pts(5).y = 125
        'draw the b閦ier
        PolyBezierTo Me.hdc, pts(0), 6
        'set the forecolor to blue
        Me.ForeColor = vbBlue
        'set the points belonging to the rectangle
        pts(0).x = 20: pts(0).y = 10
        pts(1).x = 200: pts(1).y = 10
        pts(2).x = 200: pts(2).y = 190
        pts(3).x = 20: pts(3).y = 190
        numpoints(0) = 4
        'set the points belonging to the triangle
        pts(4).x = 100: pts(4).y = 0
        pts(5).x = 50: pts(5).y = 100
        pts(6).x = 150: pts(6).y = 100
        numpoints(1) = 3
        'draw the polygons
        PolyPolygon Me.hdc, pts(0), numpoints(0), 2
    End Sub
      

  3.   

    Dim TemphDC As Long
    Dim TemphPen As Long
    Dim OldhPen As Long
    Dim TempP as POINTAPITemphDC=GetDC(Frm1.hWnd)                    '取得窗体客户区的句柄
    TemphPen=CreatePen(PS_SOLID, 1, QBColor(1)) '创建一个 颜色为蓝色、线宽为1 的实线画笔
    OldhPen=SelectObject(TemphDC, TemphPen)     '把画笔选入DC
    Call MoveToEx(TemphDC, 0, 0, TempP)         '移动点
    Call LineTo(TemphDC, 100, 100)              '绘制一条线
    Call SelectObject(TemphDC, OldhPen)         '回复原来的画笔
    Call DeleteObject(TemphPen)                 '释放画笔
    Call ReleaseDC(Frm1.hWnd, TemphDC)          '释放由GetDC取得的DC