当前位置: 代码迷 >> Android >> android 用canvas.clipPath 画不规则的Bit地图
  详细解决方案

android 用canvas.clipPath 画不规则的Bit地图

热度:91   发布时间:2016-05-01 10:02:37.0
android 用canvas.clipPath 画不规则的Bitmap
?
转载请注明出处:http://www.bangchui.org/read.php?tid=10646

通过使用canvas.clipPath,可以将一个规则的位图裁剪为不规则的位图

一个矩形的图,一般画出来是这样子的:


我们需要画成这个样子:


通过canvas.clipPath(path);方法可以达到这个效果,看代码:
package org.bangchui;?import android.content.Context;import android.graphics.Canvas;import android.graphics.Path;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.View;?public class MyView extends View {????private Drawable mDrawable;?????public MyView(Context context) {????????super(context);????????init();????}?????public MyView(Context context, AttributeSet attrs) {????????super(context, attrs);????????init();????}?????public MyView(Context context, AttributeSet attrs, int defStyle) {????????super(context, attrs, defStyle);????????init();????}?????private void init() {????????mDrawable = getResources().getDrawable(R.drawable.testpath);?????????????}?[email protected]????protected void onDraw(Canvas canvas) {????????super.onDraw(canvas);?????????????????Path path = new Path();????????path.moveTo(0, 0);????????path.lineTo(300, 0);?????????????????path.lineTo(300, 150);?????????????????path.lineTo(150, 300);?????????????????path.lineTo(0, 300);?????????????????path.lineTo(0, 0);?????????????????canvas.clipPath(path);??????????????????????????mDrawable.setBounds(0, 0, getWidth(), getHeight());????????mDrawable.draw(canvas);?????????????}???????????}
?本文地址:http://bajiewuneng.iteye.com/blog/1918148
  相关解决方案