2014-01-03 2 views
0

Я хочу сделать приложение в том, что есть два растровых изображения, я хочу удалить изображение, когда я касаюсь пальца, или покажут мой палец, и будет показана вторая часть растрового изображения. & first image's часть будет стерта я использовал следующий код, но в этом оба изображения заменяют, но я хочу, чтобы удалить только первый, второй будет показан на стираемой области, ..can любое тело помочь мне, как справиться с этойзаменяя одно растровое изображение на второе одно холст android

ниже является кодом

public class PaintView extends View implements OnTouchListener { 
private static final String TAG = "PaintView"; 
Bitmap Bitmap1, Bitmap2; 
Bitmap Transparent; 
Bitmap overlay; 
int X = -100; 
int Y = -100; 
Canvas c2; 

// List<Point> points = new ArrayList<Point>(); 
Paint paint = new Paint(); 

public PaintView(Context context) { 
    super(context); 
    setFocusable(true); 
    setFocusableInTouchMode(true); 
    this.setOnTouchListener(this); 

    Bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.bear); 
    Bitmap2 = BitmapFactory 
      .decodeResource(getResources(), R.drawable.camel); 
    Transparent = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888); 
    c2 = new Canvas(); 
    c2.setBitmap(Transparent); 
    c2.drawBitmap(Bitmap1, 0, 0, null); 


    paint.setAlpha(0); 
    paint.setStyle(Style.FILL); 

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); 
    paint.setAntiAlias(true); 

} 

@Override 
public void onDraw(Canvas canvas) { 
    c2.drawBitmap(Bitmap2, 0, 0, null); 
    c2.drawCircle(X, Y, 50, paint); 
    canvas.drawBitmap(Transparent, 0, 0, null); 

} 

public boolean onTouch(View view, MotionEvent event) { 
    X = (int) event.getX(); 
    Y = (int) event.getY(); 

    invalidate(); 
    return true; 
} 
} 

class Point { 
float x, y; 

@Override 
public String toString() { 
    return x + ", " + y; 
} 
} 

ответ

0

И наконец, я решил, что p roblem by

public class PaintView extends View implements OnTouchListener { 
private static final String TAG = "PaintView"; 
Bitmap Bitmap1, Bitmap2; 
Bitmap Transparent; 
Bitmap overlay; 
int X = -100; 
int Y = -100; 
Canvas c2; 
private boolean isTouched = false; 

// List<Point> points = new ArrayList<Point>(); 
Paint paint = new Paint(); 

public PaintView(Activity context) { 
    super(context); 
    setFocusable(true); 
    setFocusableInTouchMode(true); 
    this.setOnTouchListener(this); 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 

    Transparent = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
    Bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.bear); 
    Bitmap2 = BitmapFactory 
      .decodeResource(getResources(), R.drawable.date); 

    c2 = new Canvas(); 
    c2.setBitmap(Transparent); 
     //  c2.drawBitmap(Bitmap1, 0, 0, null); 
    c2.drawBitmap(Bitmap2, 0, 0, paint); 

    paint.setAlpha(0); 
    paint.setStyle(Style.FILL); 
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); 
    paint.setAntiAlias(true); 




} 

private static Point getDisplaySize(final Display display) { 
    final Point point = new Point(); 
    point.x = display.getWidth(); 
    point.y = display.getHeight(); 
    return point; 
} 

@Override 
public void onDraw(Canvas canvas) { 
    System.out.println("onDraw"); 
    c2.drawCircle(X, Y, 50, paint); 
    if(isTouched) 
    { 
     canvas.drawBitmap(Bitmap1, 0, 0, null); 
    } 
    canvas.drawBitmap(Transparent, 0, 0, null); 

} 

public boolean onTouch(View view, MotionEvent event) { 
    isTouched = true; 
    X = (int) event.getX(); 
    Y = (int) event.getY(); 

    invalidate(); 
    return true; 
} 
} 

    class Point { 
float x, y; 

@Override 
public String toString() { 
    return x + ", " + y; 
} 
} 
Смежные вопросы