我在word里写了一个宏,就是给选中的图型shape加上颜色,
Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 128, 0)
可是客户给我们的是四个颜色位的,Color="255,0,0,0"
说第一个255是透明度,后面三个是那个RGB里的,这个透明度是什么,该怎么写代码呢?

解决方案 »

  1.   

    透明度不属于颜色表示方法的,而是有专门的表示方法的,在图片保存中是使用的专门的ALPHA通道保存的起数值跟单一颜色一样从0-255。
    所以客户给的只是一种简略书写,按标准应该分开书写。
    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 128, 0)
    这一语句三个参数添Color="255,0,0,0"后面三个数值,第一个数值在这里不用去管。
    然后一般是在Opacity或ALPHA属性里面去赋第一个值,具体是什么属性我也不晓得没有用过,但绝对不是在ForeColor.RGB里一起设置,因为透明度完全跟颜色表示是两回事,两中概念。
      

  2.   

    举个例子给你就明白了:
    比如图片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融合了。
    所以,只有在做图像融合的时候才用得到透明度,其他的时候这个值是没有用的。
      

  3.   

    同意楼上。不过Word里的透明度取值范围是0-1。一个比较简单的理解(不一定准确):你看到的颜色实际是背景色和实际颜色的混合叠加(alpha blending),而透明度的值就是背景色在这个叠加中占的比例。一般情况下透明度的值是0,也就是说背景色完全被掩盖了。如果你逐渐参加透明度的值,背景色在结果中就逐渐显现出来。直至透明度是1时,你看到的就完全是背景色。你可以右击一个简单的Shape(例如矩形),选择“设置格式...”,然后就可以改变填充色及透明度的值来看具体效果。具体在Word里的作法是设定FillFormat,LineFormat,ShadowFormat对象的Transparency属性(详见帮助)的值,例如:
    selection.ShapeRange(1).Fill.Transparency = 0.5 '一半一半
    selection.ShapeRange(1).Line.Transparency = 1 '只显示背景色至于怎么把你客户的0-255透明度值转换成0-1之间的值,我不是很确定。大概是(255-Val)/255 或者 Val/255中之一。
      

  4.   

    “透明度”一般是指:Alpha——不透明度透明合成公式:R = R0 + (Clng(R1)-R0)*Alpha\255
    G = G0 + (Clng(G1)-G0)*Alpha\255
    B = B0 + (Clng(B1)-B0)*Alpha\255R0、G0、B0:背景图层
    R1、G1、B1:前景图层