bitmapshader 实现图片的放大镜效果

来源:互联网 发布:mac 命令行 u盘路径 编辑:程序博客网 时间:2024/05/22 01:41
/** * Created by qianxin on 16/11/25. */public class ZoomImageView extends View {    private Bitmap bitmap;    private Paint paint;    //放大倍数    private static final int FACTOR = 3;    //放大镜的半径    private static final int RADIUS = 100;    private int  centerX ,centerY;    public ZoomImageView(Context context) {        super(context);        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.zsh);        Bitmap bmp = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() * FACTOR, bitmap.getHeight() * FACTOR, true);        //制作一个圆形的图片(放大的局部),盖在canvas上面        BitmapShader shader = new BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);        paint = new Paint(Paint.ANTI_ALIAS_FLAG);        paint.setShader(shader);        centerX = centerY = RADIUS;    }    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        super.onDraw(canvas);        canvas.drawBitmap(bitmap, 0, 0, paint );        //画制作好的圆形图片        canvas.drawCircle(centerX, centerY, RADIUS, paint);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        int x = (int) event.getX();        int y = (int) event.getY();        Matrix matrix = new Matrix();        matrix.setTranslate( -x * (FACTOR-1),  -y * (FACTOR-1));        paint.getShader().setLocalMatrix(matrix);        centerX =  x;        centerY =  y;        invalidate();        return true;    }}

0 0
原创粉丝点击