VB6灰度化图片的方法

应用场景

自定义的button控件,其视觉效果是绘图实现的,其中涉及贴图、绘图、画文本,一幅图绘制完成后,如果该button被设置为Enabled=False,则需要对图进行灰度化处理。

方法1:再造各像素点

对图像中的每个像素点进行重新计算一个新值,构成一幅灰度化的图像。网上烂大街的方法就是它。

优点:简单、直接

缺点:低效,图像尺寸稍微大一点的话,慢得无法忍受,体验极差

Private Sub Command1_Click()
    Dim i As Long, j As Long, R As Integer, G As Integer, B As Integer, newColor As Long
    For i = 0 To Picture1.ScaleWidth - 1
        For j = 0 To Picture1.ScaleHeight - 1
            GetRGBColors Picture1.Point(i, j), R, G, B
            newColor = (3 * R + 6 * G + B) / 10
            Picture1.PSet (i, j), RGB(newColor, newColor, newColor)
        Next
    Next
End Sub

'根据颜色的Long值获取颜色的16进制RGB值
Private Function GetRGBColors(ByVal Color As Long, R As Integer, G As Integer, B As Integer)
    Dim sHexColor As String
    If Color = -1 Then
        R = 0
        G = 0
        B = 0
    Else
        sHexColor = String(6 - Len(Hex(Color)), "0") & Hex(Color)
        R = "&H" &
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThorpeTao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值