GDI+_VB6_ARGB

在写一个用GDI+代替VB的Line函数的方法时,遇到了一个问题。

GdipCreateSolidFill

 

参数
color
[in]ARGB颜色,指定此实体画笔的初始颜色。
brush
[out]指向接收到新创建的SolidBrush对象的指针的变量的指针。
返回值
如果函数成功,则返回Ok,它是状态枚举的一个元素。
如果函数失败,它返回状态枚举的其他元素之一。 

 

在得到ARGB值这一点出现了问题。

我当时以为很简单的HEX(ARGB)就能解决结果我就错了。

查阅了很多时间,才知道原来要分开来转换。

 

1 ARGB有四个值:
2 
3 透明度 红色值 绿色值 蓝色值
4 
5 于是我做了一个函数来解决:
Public Function ARGB(alpha As Integer, red As Integer, green As Integer, blue As Integer) As Long
'ARGB(透明度,红色,绿色,蓝色)
    If alpha > 255 Or red > 255 Or green > 255 Or blue > 255 Then
    '大于255 返回0
    ARGB = 0: Exit Function
    End If
    Dim S_a As String, S_r As String, S_g As String, S_b As String, S_16 As String
    S_a = Hex(alpha): S_r = Hex(red): S_g = Hex(green): S_b = Hex(blue)
'由于十六进制ARGB是以两位数为一个值的。
'当字符个数为1时前面加0补充
    If Len(S_a) < 2 Then S_a = "0" & S_a
    If Len(S_r) < 2 Then S_r = "0" & S_r
    If Len(S_g) < 2 Then S_g = "0" & S_g
    If Len(S_b) < 2 Then S_b = "0" & S_b
    S_16 = "&H" & S_a & S_r & S_g & S_b
'ARGB=&H FFFF FFFF
ARGB = Val(S_16)
End Function
 
  

 

虽然很简单的一个东西,但是百度上对ARGB的介绍极少,导致浪费了我不少的时间,所以建一篇帖子谨记。

 

 

 


  

 

 

转载于:https://www.cnblogs.com/lingqingxue/p/10362639.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值