怎么实现PNG 在mobile 6.0上透明呢
如何实现PNG 在mobile 6.0上透明呢?找好了好长时间,不得其法.gdiplus在pc很好,移到mobile上没有效果.有哪
如何实现PNG 在mobile 6.0上透明呢? 找好了好长时间,不得其法. gdiplus在pc很好,移到mobile上没有效果. 有哪位兄弟做过,高分伺候. 是C++. 网络上太多C#的实现,自己看不太明白,如果哪位知道从C#转到C++,也麻烦告知一二[解决办法] 呵呵,这个不好办啊~~ 你可以把内存整出来自己画,可以用png解析器把内存搞出来,再alpha混合再贴回去。 另外一种方法,试试用IImage,这个能解决就是速度慢。[解决办法] 一定要png弄透明吗?不是png的话很好弄。 用AlphaBlend这个函数来实现。 http://msdn.microsoft.com/en-us/library/aa920812.aspx C#的话,参考一下这个例子: http://www.codeproject.com/KB/mobile/IPhoneUI.aspx?fid=1532333&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=3060077[解决办法] 如果只是针对png图片的话,最好png本身做的时候就是半透明的,这样利用IImagingFactory,IImage接口就可以实现半透明的效果,否则通用的方法就是用AlphaBlend的方法实现半透明效果。[解决办法] sdk自带例子:\Windows Mobile 6 SDK\Samples\Common\CPP\Win32\Imaging[解决办法] 那个例子是加载可以加载png图片,如果你的png图片本身是半透明的,显示的效果就是半透明的,否则只能用AlphaBlend实现。[解决办法] 参考: hBitmap=LoadBitmap(g_hInst,MAKEINTRESOURCE (IDB_BITMAP6));//这里可以用其他方法加载其他格式的图片,如SHLoadImageFile hdcMem = CreateCompatibleDC(hDC); SelectObject(hdcMem,hBitmap); bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0 ; bf.SourceConstantAlpha = 170; bf.AlphaFormat = 0; AlphaBlend(hDC, x, y, width, height, hdcMem , 0, 0, width, height, bf);[解决办法]
探讨 引用: 参考: hBitmap=LoadBitmap(g_hInst,MAKEINTRESOURCE (IDB_BITMAP6));//这里可以用其他方法加载其他格式的图片,如SHLoadImageFile hdcMem = CreateCompatibleDC(hDC); SelectObject(hdcMem,hBitmap); bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0 ; bf.SourceConstantAlpha = 170; bf.AlphaFormat = 0; AlphaBlend(hDC, x, y, width, height, hdcMem , 0, 0, width, height, bf); …[解决办法] IMAGE和IMAGEFACTORY是正解。
[解决办法] wm5.0sdk以后的话,就用AlphaBlend可以实现透明。
或者,你直接加载一个透明图片也可以的。
IMAGEINGFACTORY这个应该更方便吧,不过这个我没有用,上面2个方法我都试过,可以的。
LZ可以写测试程序试试。。。。
[解决办法] 用WMGL试试吧,一个国外的画图库. 速度还行
http://www.mobilityflow.com/products/wmgl/
WMGL is the Graphic Library developed for Windows Mobile devices. It provides easy-in-use interfaces for fast alpha blending and various 3D effects.
[解决办法] 探讨 我现在的做法是把背景叠加进去,假透明,效率还很低,没办法了.[解决办法] 探讨 参考: hBitmap=LoadBitmap(g_hInst,MAKEINTRESOURCE (IDB_BITMAP6));//这里可以用其他方法加载其他格式的图片,如SHLoadImageFile hdcMem = CreateCompatibleDC(hDC); SelectObject(hdcMem,hBitmap); bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0 ; bf.SourceConstantAlpha = 170; bf.AlphaFormat = 0; AlphaBlend(hDC, x, y, width, height, h…[解决办法] LoadBitMap是无法实现透明的,你只能用com来做
IImagingFactory
IImage
通过com的方式加载png,draw.这个我在mobile6下是没问题的