在WinCe里有没有快速的方法可以实现
把一个图透明的贴在另一图上,且帖上去的图是有玻璃效果的,就是透明度吧。。。这样可以模糊的看到背景
不知道有什么好用且快速的方法呢。
这里有两个透明要说明的,第一个透明指的是像PC机上的图片,可用图片处理工具把背景置成透明,即当图片帖在有背景的地方指定的透明部分是不显示的。。
第二个透明是指整张图片的透明度,透明度高可以看到背景的。。
谢谢回答
我的问题是直接用AlphaBlend的话可以实现透明度,就是我把该图贴过去有背景的都没问题
但AlphaBlend 不支持背景透明。。
我想要的是把一张图透明的贴在一个有背景的图上。且帖在图上的效果还是半透明的。
你说的通道我还没了解过是怎么一回事,可以说点吗。
你说的通道是AlphaBlend 吗。。通过Alpha通道。。
只是我把通道值设成了255好像也没用 WinCe支持通道的吗,还是说我打少了哪个模块呢?
编译内核时,要把 AlphaBlend API打勾
函数功能:该函数用来显示透明或半透明像素的位图。
函数原型:AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction);
先谢谢了,可能是我没把问题说清楚吧
其实我是想要 AlphaBlend 和 TransparentImage的混合效果,但是不知道如何能做到呢,TransparentImage让图片透明[就是指定一种色不显示,像PC机上的Alpha设为Transparent的效果],而AlphaBlend可以让图片有透明度,可以看到背景。
lz ,还是不太明白
如果想在背景图片上贴张透明的图片你可以做如下操作:
背景图片直接用BitBlt画到内存dc上
第二张图片用AlphaBlend 选进该dc中, 这里要设置透明的属性
BLENDFUNCTION bf;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.SourceConstantAlpha = 255; 设置这个值看到不同的透明效果
bf.AlphaFormat = 0;
我打个比喻吧
图A为背景 图B为贴图 就如B是一个球,而背景色是紫色
我想的效果是:
B贴在A上,没有B的背景紫色,且B是半透明的贴在A上 A是保持不变的。就像个背景。
还有,我想问做图分背景和前景之分吗? 我现在还搞不懂,如果是这样的,那就好办了。
而我原来用的办法是:
先把B要在A上贴的那部分背景剪下来C,再把B用去背景色[即去掉B的紫色]的方法贴在C上 这时已是去了背景紫色了
再把这个C通过半透明的方法即AlphaBlend贴回A的原来部分,可这不是我要的效果,因为我想要的是A那个背景不透明,而现在C那半透明的贴回A已是使原来的背景也半透明了。
按你如说,必须要分块处理,不能整张图来处理.
就按你的方法,进行分块处理就行了.
背景分两块.
lz,干吗要把B图片加上紫色背景呢,如果是为了把球的形状圈出来,完全没必要用紫色背景
把你在图片中想要的图形圈起来做成通道即可
lz,干吗要把B图片加上紫色背景呢,如果是为了把球的形状圈出来,完全没必要用紫色背景
把你在图片中想要的图形圈起来做成通道即可
lz,干吗要把B图片加上紫色背景呢,如果是为了把球的形状圈出来,完全没必要用紫色背景
把你在图片中想要的图形圈起来做成通道即可