Win32API类

因为要使用SetROP2函数获得橡皮线效果,系统中使用了较多的API函数,除了SetROP2外,还包括CreatePen, CreateSolidBrush, GetStockObject, SelectObject, DeleteObject, MoveToEx,LineTo,Ellipse和Arc等,以及一个LPPOINT 结构。为了管理这些API函数,创建了一个Win32API类。关于API函数的声明和调用,请参见第3章的内容。需要注意的是,由于用到互操作,必须导入System.Runtime.InteropServices名字空间。Win32API类中用到的API函数的意义如表3-1所示。因为MoveToEx 等函数中要用到LPPOINT类型的参数,所以需要首先创建一个该类型的结构。

表3-1 Win32API类中声明的API函数的意义

Document Image
\[\]
code.vb.net
Imports System.Runtime.InteropServices
Public Class Win32API
    <StructLayout(LayoutKind.Sequential)> Public Structure LPPOINT
        Public x As Long
        Public y As Long
    End Structure"
    <DIIImport("gdi32.dll")>_
    Public Shared Function SetROP2(ByVal hdc As IntPu,_
        ByVal nDrawMode As Integer) As Boolean
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function CreatePen(ByVal nPenStyle As Integer,
            By Val nWidth As Integer, ByVal crColor As Integer)_
            As Long
    End Function
    <DIIlmport(\"gdi32.dIl)> Public Shared Punction CreateSolidBrush_
             (ByVal crColor As Integer) As Long
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function GetStockObject(ByVal nIndex As Integer) As Long
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function SelectObjectByVal hdc As IntPtr,
            ByVal hObject As Long) As Long
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function DeleteObject(ByVal hObject As Long) As Long
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function MoveToEx_
         (ByVal hdc As IntPr, ByVal x As Integer, ByVal y As Integer,
        ByVal lpPoint As LPPOINT) As Boolean
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function LineTo_
         (ByVal hdc As IntPr,ByVal x As Integer,_
        ByVal y As Integer) As Boolean
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function Rectangle
         (ByVal hdc As IntPtr,ByVal X1 As Integer,ByVal Y1 As Integer,
        ByVal X2 As Integer,ByVal Y2 As Integer)As Boolean
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function Ellipse_
         (ByVal hdc As IntPtr,ByVal X1 As Integer,ByVal Y1 As Integer,
        ByVal X2 As Integer,ByVal Y2 As Integer)As Boolean
    End Function
    <DIIImport("gdi32.dll")>_
    Public Shared Function Arc.
         (ByVal hdc As IntPtr,ByVal X1 As Integer,ByVal Y1 As Integer,_
        ByVal X2 As Integer,ByVal Y2 As Integer,ByVal X3 As Integer,
        ByVal Y3 As Integer,ByVal X4 As Integer,ByVal Y4 As Integer)As Boolean
    End Function
End Class