android 그림의 사각 원화 및 커팅 원형 그림

3915 단어 android 그림
/**
     *         
     * @param bitmap   
     * @param roundPixels    
     * @param half       
     * @return
     */
    public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels,int half)
    {
    	int width=bitmap.getWidth();
    	int height=bitmap.getHeight();
    	
        //               
        Bitmap roundConcerImage = Bitmap.createBitmap(width,height, Config.ARGB_8888);
        //      roundConcerImage   
        Canvas canvas = new Canvas(roundConcerImage);
        //    
        Paint paint = new Paint();
        //                
        Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        RectF rectF = new RectF(rect);
        //    
        paint.setAntiAlias(true);
        
        
        //                 
        canvas.drawRoundRect(rectF, roundPixels, roundPixels , paint);
        //      
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        //        
        canvas.drawBitmap(bitmap, null, rect, paint);
        switch(half){
        	case HalfType.LEFT:
        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width/2, height);
        	case HalfType.RIGHT:
        		return Bitmap.createBitmap(roundConcerImage, width/2, 0, width/2, height);
        	case HalfType.TOP:
        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width, height/2);
        	case HalfType.BOTTOM:
        		return Bitmap.createBitmap(roundConcerImage, 0, height/2, width, height/2);
        	case HalfType.NONE:
        		return roundConcerImage;
        	default:
        		return roundConcerImage;
        }
    }

원형 그림을 재단하다.
        /**
         *        
         * @param bitmap   Bitmap  
         * @return
         */
        public Bitmap toRoundBitmap(Bitmap bitmap) {
                int width = bitmap.getWidth();
                int height = bitmap.getHeight();
                float roundPx;
                float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;
                if (width <= height) {
                        roundPx = width / 2;
                        top = 0;
                        bottom = width;
                        left = 0;
                        right = width;
                        height = width;
                        dst_left = 0;
                        dst_top = 0;
                        dst_right = width;
                        dst_bottom = width;
                } else {
                        roundPx = height / 2;
                        float clip = (width - height) / 2;
                        left = clip;
                        right = width - clip;
                        top = 0;
                        bottom = height;
                        width = height;
                        dst_left = 0;
                        dst_top = 0;
                        dst_right = height;
                        dst_bottom = height;
                }
                 
                Bitmap output = Bitmap.createBitmap(width,
                                height, Config.ARGB_8888);
                Canvas canvas = new Canvas(output);
                 
                final int color = 0xff424242;
                final Paint paint = new Paint();
                final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom);
                final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom);
                final RectF rectF = new RectF(dst);
 
                paint.setAntiAlias(true);
                 
                canvas.drawARGB(0, 0, 0, 0);
                paint.setColor(color);
                canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
 
                paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
                canvas.drawBitmap(bitmap, src, dst, paint);
                return output;
        }

좋은 웹페이지 즐겨찾기