android path对象使用方法与Region.Op的解释
16lz
2021-01-26
转自:http://apps.hi.baidu.com/share/detail/24106971
这里解释一下android的path对象使用方法,以及Region.Op的各项解释。
我们以两幅图片的叠加操作来说明上面对象的详细使用方法。
现在我们有两张全屏大小的图片,我们想让第一个图片在一个梯形区域中显示,第二个图片在一个正方形的区域中显示。然后进行叠加处理。
下面是详细的源代码:
package doulianjun.me;import android.app.Activity;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.Region;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;public class TestImage extends Activity implements OnClickListener {Bitmap m_firstImg;Bitmap m_secondImg;Bitmap m_finalImg;Canvas m_finalImgC;ImageView m_image;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.flapimg);m_image = (ImageView) findViewById(R.id.flapImg);Resources res = this.getResources();m_firstImg = BitmapFactory.decodeResource(res, R.drawable.screen1);m_secondImg = BitmapFactory.decodeResource(res, R.drawable.screen2);m_finalImg = Bitmap.createBitmap(m_firstImg.getWidth(), m_firstImg.getHeight(), Bitmap.Config.ARGB_8888);m_finalImgC = new Canvas(m_finalImg);m_image.setOnClickListener(this);}/*** 重载Click事件响应*/@Overridepublic void onClick(View v) {int w = m_firstImg.getWidth();int h = m_firstImg.getHeight();Path pth1 = new Path();pth1.moveTo(w * 0.27f, 0);pth1.lineTo(w * 0.73f, 0);pth1.lineTo(w * 0.92f, h);pth1.lineTo(w * 0.08f, h);pth1.close();m_finalImgC.clipPath(pth1);m_finalImgC.drawBitmap(m_secondImg, 0, 0, null);Path pth2 = new Path();pth2.moveTo(0, 0);pth2.lineTo(200, 0);pth2.lineTo(200, 200);pth2.lineTo(0, 200);pth2.close();m_finalImgC.clipPath(pth2, Region.Op.XOR);m_finalImgC.drawBitmap(m_firstImg, 0, 0, null);m_image.setImageBitmap(m_finalImg);}}
这里是原始图片: 图片1:
图片2:
我们改动倒数第3行,即: m_finalImgC.clipPath(pth2, Region.Op.XOR);
将Region.Op.XOR分别替换为其他选项: INTERSECT、 DIFFERENCE、REVERSE_DIFFERENCE、REPLACE、UNION、XOR,可以得到如下的几幅图像效果,下面可以直观的看看:
效果1:Region.Op.INTERSECT
效果2: Region.Op. DIFFERENCE
效果3: Region.Op.REVERSE_DIFFERENCE
效果4: Region.Op.REPLACE
效果5: Region.Op.UNION
效果6: Region.Op.XOR
更多相关文章
- Android图像处理(2):怀旧效果
- Android(安卓)文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
- Android中“android:elevation”设置阴影,在真机上没有效果的问题
- Android(安卓)图片缓存处理
- Android(安卓)Gallery实现苹果的coverflow效果
- Android实现拍照及图片显示效果
- Android手势:单指拖动、双指缩放图片
- Android布局属性android:clipToPadding的UI设计妙用
- Android通过ViewPager实现左右滑动切换图片