VB画板的填充功能

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:54:15
我想用VB做个画板.如何实现画板中的填充功能?
这样不行,怎么回事?
三楼的,你的填充没起到作用,只是画圆的时候就画成了实心圆,不要Debug.Print ExtFloodFill(Picture1.hdc, X, Y, Picture1.FillColor, FLOODFILLSURFACE)也一样.

没有效率的笨办法:
填充时用point取鼠标所在位置象素的颜色,然后从这个象素朝周围扩散查找每一相邻象素,如果与point取的颜色相同,就用pset画上要填充的颜色

用API的FloodFill,速度很快,效率高
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,欲使用的边界颜色。由这个颜色包围的表面会被填充

=========================================
刷子....

给你写个例子好了
Option Explicit

Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32&q