填充由指定颜色的边框分隔的区域
语法
Paint [target ,] [STEP] (x , y )[, [paint ][, [border_color ]]]
参数
target
指定要绘制的缓冲区。
STEP
表示坐标是相对的
(x , y )
开始洪水填充的像素的坐标(油漆)
paint
颜色属性或填充图案
数值表示颜色,而字符串表示填充图案
border_color
边界颜色为填充
说明
图形命令填充由指定颜色的边框分隔的区域。也称为“灌水”或“油漆桶”。
Paint可以在
ScreenSet语句或目标
Get/
Put缓冲区设置的当前工作页面上进行操作(如果指定)。
填充开始于指定的
(x ,y )??坐标;如果指定
STEP,则它们相对于最后一个图形光标位置。坐标也受
Window和/或
View (图形)语句设置的自定义坐标系的影响;由
View设置的剪辑也适用。
如果
paint 参数是一个数字,则它假定为
Color语句使用相同格式的颜色,并且该区域使用该颜色进行洪泛填充。如果
paint 是
String,则将使用模式填充该区域;该图案始终为8 * 8像素,传递的字符串必须以取决于当前颜色深度的格式保存像素数据。该字符串逐行保存图案像素,其大小应如下所示:
对于颜色深度1,2,4和8:
size = 8 * 8 = 64对于颜色深度15和16:
size = (8 * 8) * 2 = 128对于颜色深度24和32:
size = (8 * 8) * 4 = 256
如果传递的字符串较小,则丢失的像素将为0。如果省略
paint 参数,则使用
Color设置的当前前景颜色执行正常填充。洪水填充继续,直到找到指定边框颜色的像素;如果省略
border_color ,则假定当前的背景颜色。
例子
'画一个白色的圆圈内涂蓝色
Screen 13
Circle (160, 100), 30, 15
Paint (160, 100), 1, 15
Sleep
'画一个圆圈,并用方格图案填充
''选择屏幕的位深度
''尝试将其设置为其他值:8,16或32
Const bit_depth = 8
''用于返回像素颜色的函数,表示为字符串
''以适当的格式返回当前位深度的字符串
Function paint_pixel( ByVal c As UInteger, ByVal bit_depth_ As Integer ) As String
If bit_depth_ <= 8 Then ''8位:
Function = Chr( CUByte(c) )
ElseIf bit_depth_ <= 16 Then ''16位:
Function = MKShort( c Shr 3 And &h1f Or _
c Shr 5 And &h7e0 Or _
c Shr 8 And &hf800 )
ElseIf bit_depth_ <= 32 Then ''32位:
Function = MKL(c)
End If
End Function
''在所选位深度打开图形窗口
ScreenRes 320, 200, bit_depth
''声明保存颜色的变量
Dim As UInteger c, c1, c2, cb
''声明用于保存在Paint中使用的模式的字符串变量
Dim As String paint_pattern = ""
''设置颜色
If bit_depth <= 8 Then
c1 = 7 ''图案颜色1
c2 = 8 ''图案颜色2
cb = 15 ''边框颜色
Else
c1 = RGB(192, 192, 192) ''图案颜色1
c2 = RGB(128, 128, 128) ''图案颜色2
cb = RGB(255, 255, 255) ''边框颜色
End If
''使图案在Paint中使用
For y As UInteger = 0 To 7
For x As UInteger = 0 To 7
''选择像素的颜色(c)
If (x \ 4 + y \ 4) Mod 2 > 0 Then
c = c1
Else
c = c2
End If
''将像素添加到模式
paint_pattern = paint_pattern + paint_pixel(c, bit_depth)
''如果要绘制,可以使用以下行
''屏幕左上角的图案拼贴:
'pset(x,y),c
Next x
Next y
''用边框颜色画一个圆
Circle (160, 100), 50, cb, , , 1.0
''用paint_pattern绘制圆形区域,停止边框颜色
Paint (160, 100), paint_pattern, cb
''在结束程序之前暂停
Sleep
与QB差别
- target 是FreeBASIC的新功能
- 在QB中,填充模式总是8位宽,高度是字符串的长度(最多64个)。在FreeBASIC中,填充图案宽8像素,与颜色深度无关,高度始终为8
- FreeBASIC版本不支持QB支持的背景颜色参数
参考