加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB给图片填充颜色代码

(2022-05-06 12:40:35)
分类: 编程
转载自http://www.wb98.com/post/169.html
有时我们需要实现一个功能,就像WINDOWS自带画图软件上的“用颜色填充”功能,只要用鼠标点击图片的某个地方,颜色就自动填充到鼠标所在位置的封闭区域。

VB填充颜色这个功能,需要用VB 加 API函数来实现。
先在窗体建一个PictureBox控件,导入一个图片,这个图片里的图形要有封闭的区域,否则,填充时,颜色就会漏出来的。

我们先在窗体上申明API
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal colorCode As Long, ByVal fillType As Long) As Long

然后建立一个专门填充的函数
Sub AreaFill(obj As Object, ByVal X As Long, ByVal Y As Long, ByVal colorCode As Long, Optional borderColor As Variant)
    Dim X2 As Long, Y2 As Long
    Dim saveFillStyle As Long
    Dim saveFillColor As Long
    With obj
        X2 = .ScaleX(X, .ScaleMode, vbPixels)
        Y2 = .ScaleY(Y, .ScaleMode, vbPixels)
        saveFillStyle = .FillStyle
        saveFillColor = .FillColor
        .FillStyle = 0
        .FillColor = colorCode
        If IsMissing(borderColor) Then
            borderColor = .Point(X, Y)
            ExtFloodFill .hdc, X2, Y2, borderColor, 1
        Else
            ExtFloodFill .hdc, X2, Y2, borderColor, 0
        End If
        .FillStyle = saveFillStyle
        .FillColor = saveFillColor
    End With
End Sub

最后在 Picture1_MouseDown事件中写入以下代码
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    AreaFill Picture1, X, Y, vbRed’最后一个参数,是表明用红色填充,你也可以改成别的颜色
End Sub

运行程序,用鼠标点击图片,你会发现你想要的用VB编程来实现颜色填充功能真的实现了。
VB给图片填充颜色代码

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有