各位高手,请问怎样在屏幕上画图,可以用鼠标的?

解决方案 »

  1.   

    1.用GetCursorPos得到鼠标位置
    2.GetAsyncKeyState(VK_LBUTTON左键VK_RBUTTON右键)得到按键状况
    3.GetWindowDC得到句柄,然后就可以根据前面得到的鼠标状态用LineTo画线,Rectangle画矩形,等等
      

  2.   

    刚刚写的在屏幕上画兰点的小程序
    1.添加Timer1
    2.Timer1.Interval=1
    3.代码如下,写得比较仓促,很可能有错误,望指正
    Private Const VK_LBUTTON = &H1
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function SetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End TypePrivate Sub Timer1_Timer()
        
        Dim lpCursorPos As POINTAPI
        Dim hDC As Long
        
        If GetAsyncKeyState(VK_LBUTTON) And &H8000 Then
            
            'MouseDown
            GetCursorPos lpCursorPos
            hDC = GetWindowDC(0&)
            SetPixel hDC, lpCursorPos.x, lpCursorPos.y, &HFF0000
        End If
    End Sub
      

  3.   

    使用异或画笔作图Public Declare Function SetROP2 Lib "gdi32" (ByVal hdc As Long, ByVal nDrawMode As Long) As Long异或画笔
    SetROP2 Picture1.hdc, 7正常画笔
    SetROP2 Picture1.hdc, 13
    用以下API
    Public Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As typeRECTAPI, ByVal bErase As Long) As LongPublic Declare Function SetROP2 Lib "gdi32" (ByVal hdc As Long, ByVal nDrawMode As Long) As Long
    Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As typePOINTAPI) As LongPublic Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPublic Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
    Public Declare Function CreateHatchBrush Lib "gdi32" (ByVal nIndex As Long, ByVal crColor As Long) As Long
    Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
    Public Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As LongPublic Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As LongPublic Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Public Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPublic Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As typePOINTAPI, ByVal nCount As Long) As Long
    Public Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As typePOINTAPI, ByVal nCount As Long) As LongPublic Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function ReleaseCapture Lib "user32" () As LongPublic Declare Function GetTextExtentPoint Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As typeSIZEAPI) As Long
    Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As typeLOGFONT) As Long
    Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
    Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As LongPublic Declare Function RectVisible Lib "gdi32" (ByVal hdc As Long, lpRect As typeRECTAPI) As LongPublic Declare Function ArcTo Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
    Public Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
    Public Declare Function Chord Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
    Public Declare Function Pie Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As LongPublic Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function PtInRect Lib "user32" (lpRect As typeRECTAPI, ByVal X As Long, ByVal Y As Long) As LongPublic Declare Function WidenPath Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function StrokeAndFillPath Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function StrokePath Lib "gdi32" (ByVal hdc As Long) As Long