楼主,你的“掩码”图片不行啊。
正规的掩码图只能是黑白2色,而你的那个在“边缘”有100多种灰度颜色。
当然“问题”不在这儿。

其实用VB6的PaintPicture方法也能实现的,用这种方法的话,
源图和“掩码”图可以用image加载,也可以用PictureBox加载;
同时这两个控件对象可见/不可见,也不会影响效果。
要用API函数BitBlt( )来操作,那只能用PictureBox加载源图和掩码,
因为GDI函数需要hDC,而Image控件是没有hDC的,但PictureBox有。
我刚才试验了一下,这是我的全部代码,和程序设计界面:
