有可能是内存不足对于WHITENESS光栅操作的问题
你最好检查一下
是不是某些常量没有申明

解决方案 »

  1.   

    以下是我的声明部分
    Public Type POINTAPI
        x As Long
        y As LongEnd Type
    Public Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
    Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
    Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Public Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
    Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
    Public Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
    Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Public Const WHITENESS = &HFF0062
    Public Const BLACKNESS = &H42
    Public Const WINDING = 2Public Const NOTSRCCOPY = &H330008Global Const SRCCOPY = &HCC0020
    Global Const SRCERASE = &H440328
    Global Const SRCINVERT = &H660046
    Global Const SRCAND = &H8800C6Public Declare Function CreateBitmapIndirect Lib "gdi32" (lpBitmap As BITMAP) As Long
    Public Type BITMAP
        bmType As Long
        bmWidth As Long
        bmHeight As Long
        bmWidthBytes As Long
        bmPlanes As Integer
        bmBitsPixel As Integer
        bmBits As LongEnd TypePublic Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    我认为在建立hdc2的时候,建立了单色位图,用vbred笔刷时,得到的图形是
    黑色的网格
      

  2.   

    对呀,我绘出来的全是黑色的,也就是说,在用CreateCompatibleBitmap
    作出的是一个单色的位图。而我绘出的白色是一个透明色,我用bitblt函数
    位图绘出时,绘在picturebox中(hdc类型为picturebox),一幅白色的图是无色的(picturebox还是他的背景色),绘到form上时,(hdc为me.hdc)
    才是白色的???????????????????
    请教一下,是不是可以用CreateBitmapIndirect函数代替CreateCompatibleBitmap,如果可以,那么BITMAP 类型的详细构成方式可不可以说一下。
      

  3.   

    CreateBitmapIndirect VB声明 
    Declare Function CreateBitmapIndirect Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP) As Long 
    说明 
    创建一幅与设备有关位图 
    返回值 
    Long,执行成功返回位图句柄,零表示失败 
    参数表 
    参数 类型及说明 
    lpBitmap BITMAP,对一幅逻辑位图进行描述的结构。这个结构中的字段与CreateBitmap函数的参数大致对应 
    注解 
    如使用由GetObject函数获得的BITMAP结构,注意GetObject不会取回位图数据——只有位图的大小和配置信息
    如果nWidth和nHeight为零,返回的位图就是一个1×1的单色位图。也请参考对CreateBitmap函数的注解
     BITMAP 类型定义 
    Type BITMAP ' 24 bytes
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long 
    End Type 
    字段表 
    字段 类型及说明 
    bmType Long,Must be 0. 
    bmWidth Long,Width of the bitmap in pixels. 
    bmHeight Long,Height of the bitmap in pixels. 
    bmWidthBytes Long,The number of bytes of data in a raster line. Must be an even number. 
    bmPlanes Integer,The number of color planes in the bitmap. 
    bmBitPixel Integer,The number of bits per pixel on each plane. 
    bmBits Long,Address of the actual bitmap data. 
    注解 
    参考CreateBitmapIndirect函数