Androidåºç¨å¼åä¸ï¼å¾å¤å¤´åé½è¦æ±æ¾ç¤ºæåå½¢çï¼è¿å°±å¯ä»¥ä½¿ç¨androidçcanvasãpaintè¿äºç±»æ¥è¿è¡è®¾ç½®åå½¢ï¼å
设置paintçæ ·å¼ä¸ºåå½¢ï¼ç¶åæä½ è¦è®¾ç½®æåå½¢çå¾çéæ°èµå¼ç»paintè¿ä¸ªç±»ï¼canvas.drawBitmap(tempBmp, rect, rect, paint);
æ ¸å¿ä»£ç å¦ä¸ï¼å¼ç¨è¿ä½åè¾ï¼http://blog.sina.com.cn/s/blog_7607703f0101dhlj.htmlï¼æå¢å ä¸äºæ³¨éï¼åæ¥æ¯æ²¡æ注éï¼ï¼
package com.liang.round;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.view.View;
public class MyView extends View {
private Bitmap bmp = null;
private Paint paint = null;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint = new Paint();//å®ä¾åç»ç¬ç±»
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(), R.drawable.test ,options);//è·å¾ä½ åæ¾å¨drawableä¸çæ£æ¹å½¢å¾ç
options.inJustDecodeBounds = false;
Bitmap tempBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.test ,options);//å®ä¾åä¸ä¸ªbitmapå¾çç±»
int width = options.outWidth;
int height = options.outHeight;
int size = width>height?height:width;//è¾¹æ¡
int pos = (int)(size/2);
double radius = pos * Math.sin(45 * 180 / Math.PI);//åå¾
size = (int)(radius * 2);
pos = (int)(size/2);
bmp = Bitmap.createBitmap(size, size, Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Rect rect = new Rect(0, 0, size, size);
paint.setAntiAlias(true);
canvas.drawCircle(pos, pos, (float)radius, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(tempBmp, rect, rect, paint);
tempBmp.recycle();
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(bmp != null){
if(!bmp.isRecycled()){
canvas.drawBitmap(bmp, 100, 100, paint);
}
}
}
}