应用场景
自定义的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" &

最低0.47元/天 解锁文章
766

被折叠的 条评论
为什么被折叠?



