通过使用Photoshop试验,得到bmp灰度图的透明度的处理原理如下。
Alpha值从0~100,某点的RGB值分别为R,G,B,让该点的alpha值为50的话,该点新的RGB值计算方法如下:
R(new)=R(old)+ (255-R(old))*(1-0.5)
如果alpha值为20公式为:
R(new)=R(old)+ (255-R(old))*(1-0.2)
以此类推。其中R(new)为新的R值,R(old)为旧的R值。G,B值的计算和R值的计算一样。
VB代码实现:
Function Alpha(SrcBox As PictureBox, DestBox As PictureBox, L As Line, fParam As Long) As Long '透明度
'Declare Area
'注意:有时候RGB值可能是负的
'fParam为alpha值
Dim tColor As Long
Dim X, Y As Long
Dim pHeight, pWidth As Long
Dim gray As Long
Dim R, G, B As Long
'---------------------
'Code Area
R = G = B = 0
pHeight = SrcBox.ScaleHeight
pWidth = SrcBox.ScaleWidth
L.X1 = 0
L.X2 = pWidth
For Y = 0 To pHeight
For X = 0 To pWidth
tColor = GetPixel(SrcBox.hdc, X, Y)
R = tColor Mod 256
G = ((tColor -R)/ 256) Mod 256
B = (tColor-256*G-R) / 65536
m = (255 - R) * (1 - (fParam / 100))
n = (255 - G) * (1 - (fParam / 100))
o = (255 - B) * (1 - (fParam / 100))
SetPixel DestBox.hdc, X, Y, RGB(R + m, G + n, B + o)
Next X
DoEvents
L.Y1 = Y + 5
L.Y2 = Y + 5
DestBox.Refresh
Next Y
L.Y1 = pHeight + 5
L.Y2 = pHeight + 5
DestBox.Refresh
Alpha = 0
End Function
BMP灰度图的透明度处理
来源:CSDN
作者:钟琼晖
时间:2008-06-10 点击:243 次
文章搜索
推荐文章
推荐产品
|
VARCHART XGantt
全球知名的甘特图控件,能够实现如 Microsoft Project 般强大的项目管理功能。
|
|
TurboDemo 中文版
TurboDemo - 抓取屏幕截图并通过动态演示示例及手册解释软件、个人电脑应用程序、网站与产品。
|
|
BCGControlBar Library .NET Edition
该组件包含大量可自定义程度高、可设计性好的组件,使用户可创建精致美观的图形用户界面。
|
|
WebUI Studio.NET
WebUI Studio.NET 是一套用于开发专业 ASP.NET web 应用程序必不可少的控件。
|





