Wie bekomme ich Auswahlbereich, die von Leinwand in Android abdecken

Hallo, ich möchte einfach cropImage Apps erstellencanvas und zeichne es rubtime.i zeichne die Leinwand über die Ansicht.so möchte ich den Bereich abschneiden, der von Leinwand bedeckt ist also hier gefällt mir das

Zuerst erstellenCanvas Example

public class CanvasExample extends Activity 
    {
        /** Called when the activity is first created. */

        RelativeLayout relMainOperationLayout;
        RelativeLayout relTabHeader;
        RelativeLayout relMidalLayout;
        RelativeLayout relBelowLayout;
        Context myContext;
        DrawCanvas drawCanvas;

        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            myContext=CanvasExample.this;

            LayoutInflater layoutInflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);   

            int layoutId = myContext.getResources().getIdentifier("main","layout",getPackageName());

            relMainOperationLayout = (RelativeLayout) layoutInflater.inflate(layoutId,null);

            relTabHeader=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relHeadLayout);

            relMidalLayout=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relmidalLayout);

            relBelowLayout=(RelativeLayout) relMainOperationLayout.findViewById(R.id.relBelowLayout);

            drawCanvas=new DrawCanvas(CanvasExample.this,myContext);
            //drawCanvas.setBackgroundColor(Color.YELLOW);
            drawCanvas.setBackgroundDrawable(CanvasExample.this.getResources().getDrawable(R.drawable.ic_launcher));
            RelativeLayout.LayoutParams drawParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,200);
            drawParams.addRule(RelativeLayout.BELOW, relTabHeader.getId());
            //relMidalLayout.addView(drawCanvas,drawParams);
            relMainOperationLayout.addView(drawCanvas,drawParams);
            setContentView(relMainOperationLayout);
        }

Danach erstelle ich eine KlasseDrawCanvas erweitertView. und zeichnen dieCanvas Laufzeit.

public class DrawCanvas extends View 

{

Context drawContext;
Activity drawActivity;
ImageView image;
Paint mPaint;
int left=0,right=0,top=0,bottom=0;
Canvas passCanvas;


public DrawCanvas(Activity activity,Context context)
{
    super(activity);
    this.drawActivity=activity;
    this.drawContext=context;


        mPaint = new Paint();

        mPaint.setDither(true);
        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(3);

    this.setOnTouchListener(new View.OnTouchListener() {

        //@Override
        public boolean onTouch(View v, MotionEvent event)
        {

            switch (event.getActionMasked()) 
            {
            case MotionEvent.ACTION_DOWN:
                invalidate();
                left=(int) event.getX();
                right=left+1;
        top=(int) event.getY();

                bottom=top+1;               

                mPaint.setColor(Color.BLACK);
           onDraw(passCanvas=new Canvas());
            break;
            case   MotionEvent.ACTION_MOVE:                 
                invalidate();

                int tempX=(int) event.getX();

                if(tempX>right)
                {
                    right=right+1;

                }else
                {
                    right=right-1;
                }                   
                int tempY=(int) event.getY();

                if(tempY>bottom)
                {
                bottom=bottom+1;                
                }else
                {
                    bottom=bottom-1;        

                }
        mPaint.setColor(Color.GREEN);
                onDraw(passCanvas=new Canvas());
            break;

            case MotionEvent.ACTION_UP:
                invalidate();
                mPaint.setColor(Color.RED);
                onDraw(passCanvas=new Canvas());
                System.err.println("After Touch Up");
                Rect rect= passCanvas.getClipBounds();
                System.err.println("Save Canvas-->"+passCanvas.save());
                System.err.println("Display Rect Width==>"+rect.toString());

            break;
            default:
                break;
            }
    return true;
        }
    });     

}

@Override
protected void onDraw(Canvas canvas) 
{

    canvas.drawRect(left, top, right, bottom, mPaint);

}

}

Jetzt möchte ich den abgedeckten Bereich mit einer Leinwand zuschneiden. Danke im Voraus.

wenn ich getClipBounds es jetzt Nullwert anzeigen, was zu tun ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage