我在word里写了一个宏,就是给选中的图型shape加上颜色,
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 128, 0)
可是客户给我们的是四个颜色位的,Color="255,0,0,0"
说第一个255是透明度,后面三个是那个RGB里的,这个透明度是什么,该怎么写代码呢?
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 128, 0)
可是客户给我们的是四个颜色位的,Color="255,0,0,0"
说第一个255是透明度,后面三个是那个RGB里的,这个透明度是什么,该怎么写代码呢?
所以客户给的只是一种简略书写,按标准应该分开书写。
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 128, 0)
这一语句三个参数添Color="255,0,0,0"后面三个数值,第一个数值在这里不用去管。
然后一般是在Opacity或ALPHA属性里面去赋第一个值,具体是什么属性我也不晓得没有用过,但绝对不是在ForeColor.RGB里一起设置,因为透明度完全跟颜色表示是两回事,两中概念。
比如图片A要叠加在图片B上,每个像素的点的颜色R,G,B最小值是0最大值是255
如果透明度为150,那么图片A上的每个点的R,G,B分别乘以150再除以255,而图片B上每个点的像素的R,G,B则乘以(255-150)再除以255,将图片A和图片B相同位置的点的R,G,B值相加,最大值还是255,最小值还是0,但是此时这个点已经是A和B融合了。
所以,只有在做图像融合的时候才用得到透明度,其他的时候这个值是没有用的。
selection.ShapeRange(1).Fill.Transparency = 0.5 '一半一半
selection.ShapeRange(1).Line.Transparency = 1 '只显示背景色至于怎么把你客户的0-255透明度值转换成0-1之间的值,我不是很确定。大概是(255-Val)/255 或者 Val/255中之一。
G = G0 + (Clng(G1)-G0)*Alpha\255
B = B0 + (Clng(B1)-B0)*Alpha\255R0、G0、B0:背景图层
R1、G1、B1:前景图层