大家请注意:我是说:用“API” 动态在屏幕上画出 “红色” 的线!!也就是说“改变”这个API画出的直线的“颜色”:Private Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long '(这个API目前只能画黑线)谢谢哦~~~~

解决方案 »

  1.   

    '不行,桌面的hDC无法与特殊的画笔相关连。
    '用窗体来代替画线吧!将窗体的Caption=""
    'ControlBox=False、BorderStyle=0、BackColor=VBRedOption ExplicitPrivate Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
    Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Type POINTAPI
            x As Long
            y As Long
    End TypePrivate Sub Form_Load()
        Me.BackColor = vbRed
        Me.Caption = ""
        
        Call LineTo(200, 200, 300, 100)
        Call SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 3)
    End SubPrivate Sub LineTo(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long)
        
        Dim tP(4) As POINTAPI
        Dim lRgn As Long
        If Y1 <> Y2 And X1 <> X2 Then
            tP(0).x = X1
            tP(0).y = Y1
            
            tP(1).x = X2
            tP(1).y = Y2
            
            tP(2).x = X2 - 2
            tP(2).y = Y2
            
            tP(3).x = X1 - 2
            tP(3).y = Y1
            
            tP(4).x = X1
            tP(4).y = Y1
            
            lRgn = CreatePolygonRgn(tP(0), 5, 1)
        Else
            If X1 <> X2 Then
                lRgn = CreateRectRgn(X1, Y1, X2, Y2 + 2)
            Else
                lRgn = CreateRectRgn(X1, Y1, X1 + 2, Y2)
            End If
        End If
        SetWindowRgn Me.hWnd, lRgn, True
    End Sub
      

  2.   


    啊,还有没有其它方法啊?比如用DirectX这类的。这个功能我已经用窗体做过的了。效果不好。我是打算给CS做一个瞄准镜,用盲狙的时候用的,因为屏幕上没有瞄准镜。
      

  3.   

    谢谢Rick110AAA(海牛猪猪)因为黑色的准心不能够适应屏幕环境的变化。哎不过我觉得1。5的盲狙在站立里还可以,我很喜欢用。做好了以后我上传到CSDN给大家一个地址,让大家都能用上。嘿嘿接着UP期待有哪们同志能在屏幕上动态的画线。画点。(变色的那种)也许可以使用其它技术,比如DirectX等。