转自: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


更多相关文章

  1. Android图像处理(2):怀旧效果
  2. Android(安卓)文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
  3. Android中“android:elevation”设置阴影,在真机上没有效果的问题
  4. Android(安卓)图片缓存处理
  5. Android(安卓)Gallery实现苹果的coverflow效果
  6. Android实现拍照及图片显示效果
  7. Android手势:单指拖动、双指缩放图片
  8. Android布局属性android:clipToPadding的UI设计妙用
  9. Android通过ViewPager实现左右滑动切换图片

随机推荐

  1. Android(安卓)EditText 密码输入框可见性
  2. 携程Android(安卓)App插件化和动态加载实
  3. 一篇文章搞懂Handler发消息时,Handler,Mess
  4. Retrofit2源码分析(2) CallAdapter详解
  5. RelativeLayout相对布局介绍及属性介绍
  6. Android(安卓)录制桌面视频 screenrecord
  7. Android-传递数据的一些讨论
  8. 【Android(安卓)Developers Training】 3
  9. Android新浪微博客户端(五)——主界面的Tab
  10. Android(安卓)studio把一段代码快速提取,