找好了好长时间,不得其法.
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);
------解决方案--------------------
------解决方案--------------------
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.
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
LoadBitMap是无法实现透明的,你只能用com来做
IImagingFactory
IImage
通过com的方式加载png,draw.这个我在mobile6下是没问题的