FloodFill VB声明 
Declare Function FloodFill Lib "gdi32" Alias "FloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long 
说明 
用当前选定的刷子在指定的设备场景中填充一个区域。区域是由颜色crColor定义的 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hdc Long,设备场景的句柄 
x,y Long,开始填充的那个点,用逻辑坐标表示 
crColor Long,欲使用的边界颜色。由这个颜色包围的表面会被填充 
注解 
点x,y绝对不能有颜色crColor,而且必须在剪切区域内。这个函数只对光栅设备有效,请参考ExtFloodFill的注解
 
ExtFloodFill VB声明 
Declare Function ExtFloodFill Lib "gdi32" Alias "ExtFloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long 
说明 
在指定的设备场景里,用当前选择的刷子填充一个区域 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hdc Long,设备场景的句柄 
x,y Long,开始填充的一个点,采用逻辑坐标表示 
crColor Long,要使用的边界颜色 
wFillType Long,欲执行的填充类型,由下述任何一个常数决定 
FLOODFILLBORDER 等同于FloodFill函数的功能 
FLOODFILLSURFACE 从指定的点向外填充,只到找到了crColor颜色(在边框采用了多种颜色时使用) 
注解 
如指定了FLOODFILLBORDER,那么x,y点绝对不能为crColor颜色。如指定了FLOODFILLSURFACE,那么x,y点必须是crColor颜色。这个函数只能在光栅设备中使用。可用GetDeviceCaps函数判断设备是否支持这个函数
 
提示 
一旦指定了FLOODFILLBORDER,务必保证初始点的颜色没有crColor。如果使用的是FLOODFILLSURFACE,务必保证初始点有颜色crColor(这是函数执行失败最常见的两个原因)。注意保证初始点位于剪切区内 

解决方案 »

  1.   

    附带问一下,保存对话框和调色板是不是有现成的控件,如果有叫什么名字阿?
    ==================================================================================
    从Window3.0开始,Windows系统提供了通用对话框函数(32位的在ComDlg32.dll)
    保存对话框:GetSaveFileName
    调色板(颜色对话框?):ChooseColor虽然封装成了通用对话框控件(Microsoft Common Dialog Control 6.0)
    当我觉得它如同鸡肋,不但功能不强(无法向调用通用对话框函数那样自定义对话框),而且多了肥胖的ComDlg32.ocx
    以前写的通用对话框模块:
    Public Declare Function GetOpenFileName _
            Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
            (pOpenfilename As OPENFILENAME) As Long
    Public Declare Function GetSaveFileName _
            Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
            (pOpenfilename As OPENFILENAME) As Long
    Public Declare Function SHBrowseForFolder _
            Lib "shell32.dll" Alias "SHBrowseForFolderA" _
            (lpBrowseInfo As BROWSEINFO) As Long
    Public Declare Function SHGetPathFromIDList _
            Lib "shell32.dll" _
            (ByVal pidl As Long, _
            pszPath As String) As Long
    Public Declare Function CHOOSECOLOR _
            Lib "comdlg32.dll" Alias "ChooseColorA" _
            (pChoosecolor As CHOOSECOLOR) As LongPublic Type OPENFILENAME
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End TypePublic Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlage As Long
        lpfn As Long
        lparam As Long
        iImage As Long
    End TypePrivate Type CHOOSECOLOR
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        rgbResult As Long
        lpCustColors As String
        flags As Long
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End TypePublic Const OFN_HIDEREADONLY = &H4 '隐藏只读打开
    Public Const OFN_READONLY = &H1 '只读打开为选中
    Public Const OFN_OVERWRITEPROMPT = &H2 '覆盖时提示
    Public Const OFN_ALLOWMULTISELECT = &H200 '多个选中
    Public Const OFN_EXPLORER = &H80000 '资源管理器Public Function ShowOpen(MehWnd As Long, _
            FileOpen As String, _
            Optional Title As String = "打开:", _
            Optional Filter As String = vbNullChar + vbNullChar, _
            Optional FilterIndex As Long = 0, _
            Optional StartDir As String = vbNullChar, _
            Optional flags As Long = OFN_HIDEREADONLY) As Long
        Dim OpenFN As OPENFILENAME
        Dim Rc As Long
        
        With OpenFN
            .hwndOwner = MehWnd
            .hInstance = App.hInstance
            .lpstrTitle = Title
            .lpstrFilter = Filter
            .nFilterIndex = FilterIndex
            .lpstrInitialDir = StartDir
            .lpstrFile = String$(256, 0)
            .nMaxFile = 255
            .lpstrFileTitle = .lpstrFile
            .nMaxFileTitle = 255
            .flags = flags
            .lStructSize = Len(OpenFN)
            
        End With
        
        Rc = GetOpenFileName(OpenFN)
        
        If Rc Then
            FileOpen = Left$(OpenFN.lpstrFile, OpenFN.nMaxFile)
            ShowOpen = True
            
        Else
            ShowOpen = False
            
        End If
        
    End FunctionPublic Function ShowSave(MehWnd As Long, _
            FileSave As String, _
            Optional Title As String = "保存:", _
            Optional Filter As String = vbNullChar + vbNullChar, _
            Optional FilterIndex As Long = 0, _
            Optional StartDir As String = vbNullChar, _
            Optional flags As Long = OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT) As Long
        Dim SaveFN As OPENFILENAME
        Dim Rc As Long
        
        With SaveFN
            .hwndOwner = MehWnd
            .hInstance = App.hInstance
            .lpstrTitle = Title
            .lpstrFilter = Filter
            .nFilterIndex = FilterIndex
            .lpstrInitialDir = StartDir
            .lpstrFile = FileSave + String$(255, Chr$(0))
            .nMaxFile = Len(.lpstrFile)
            .lpstrFileTitle = .lpstrFile
            .nMaxFileTitle = 255
            .flags = flags
            .lStructSize = Len(SaveFN)
            
        End With
        
        Rc = GetSaveFileName(SaveFN)
        
        If Rc Then
            FileSave = Left$(SaveFN.lpstrFile, SaveFN.nMaxFile)
            ShowSave = True
            
        Else
            ShowSave = False
            
        End If
        
    End FunctionPublic Function ShowDir(MehWnd As Long, _
            DirPath As String, _
            Optional Title As String = "请选择文件夹:", _
            Optional flage As Long = &H1, _
            Optional DirID As Long) As Long
        Dim BI As BROWSEINFO
        Dim TempID As Long
        Dim TempStr As String
        
        TempStr = String$(255, Chr$(0))
        With BI
            .hOwner = MehWnd
            .pidlRoot = 0
            .lpszTitle = Title + Chr$(0)
            .ulFlage = flage
            
        End With
        
        TempID = SHBrowseForFolder(BI)
        DirID = TempID
        
        If SHGetPathFromIDList(ByVal TempID, ByVal TempStr) Then
            DirPath = Left$(TempStr, InStr(TempStr, Chr$(0)) - 1)
            ShowDir = -1
            
        Else
            ShowDir = 0
            
        End If
        
    End FunctionPublic Function ShowColor(MehWnd As Long, _
            GetColour As Long, _
            Optional flags As Long = 0)
        Dim CC As CHOOSECOLOR
        Dim Rc As Long
        Dim CustC() As Byte
        
        With CC
            .hwndOwner = MehWnd
            .hInstance = App.hInstance
            .lpCustColors = StrConv(CustC, vbUnicode)
            .rgbResult = GetColour
            .flags = flags
            .lStructSize = Len(CC)
            
        End With
        
        Rc = CHOOSECOLOR(CC)
        
        If Rc Then
            GetColour = CC.rgbResult
            ShowColor = -1
            
        Else
            ShowColor = 0
            
        End If
        
    End Function
      

  2.   

    还有如何将窗体的一部分存成图片(包含label,text和图)?
    ------------------------------------------------------
    用GetDC得到DC
    BitBit到PictureBox
    用ReleaseDC释放DC
    执行SavePicture语句保存BMP
      

  3.   

    画出一个封闭的不规则多边形 -- Polygon