public void onDraw(Canvas can){
System.out.println("onDraw");
can.drawColor(Color.WHITE);
ImageView imageView = (ImageView) findViewById(R.id.btn01);
imageView.setDrawingCacheEnabled(true);
Bitmap bitmap = imageView.getDrawingCache();
//Bitmap bitmap = BitmapFactory.decodeResource(getResources(),drawable.test);
can.drawBitmap(bitmap, 0, 0, null);
그림판 프로그램 만들고있는 코딩중 일부분이구요
주석처리되있는부분 //Bitmap bitmap = BitmapFactory.decodeResource(getResources(),drawable.test);
으로 그림을 직접 drawable폴더에 넣고 하니 그림판 배경으로 사진이 잘 들어갔는대요 저가 원하는건 사진을 선택해서 그 선택된 사진을 배경으로 넣어야 되기 때문에 setDrawingCacheEnabled를 사용했는대요
테스트로 btn01이미지뷰에 test그림을 넣고 위에 코딩식으로 실행을 했더니 널값으로 실행이 안되는 문제가 생기네요
무엇이 잘못된 것일까요................
그리고 추가로
super(context,attrs);
p.setColor(Color.BLACK);
p.setAntiAlias(true);
p.setStrokeWidth(5);
p1.setColor(Color.RED);
p1.setAntiAlias(true);
p1.setStrokeWidth(5);
p2.setColor(Color.YELLOW);
p2.setAntiAlias(true);
p2.setStrokeWidth(5);
p3.setColor(Color.BLUE);
p3.setAntiAlias(true);
p3.setStrokeWidth(5);
}
//////////////////////////////////////////////////////////////////////////////이렇게 팬 색깔 종류를 만들고
for(int i=0;i<list.size();i++){
Vertex v = list.get(i);
if(v.stat == true){
if(b.b==0){
can.drawLine(list.get(i-1).x,list.get(i-1).y ,list.get(i).x,list.get(i).y, p);
}
else if(b.b==1){
can.drawLine(list.get(i-1).x,list.get(i-1).y ,list.get(i).x,list.get(i).y, p1);
}
else if(b.b==2){
can.drawLine(list.get(i-1).x,list.get(i-1).y ,list.get(i).x,list.get(i).y, p2);
}
else if(b.b==3){
can.drawLine(list.get(i-1).x,list.get(i-1).y ,list.get(i).x,list.get(i).y, p3);
}
else{
can.drawLine(list.get(i-1).x,list.get(i-1).y ,list.get(i).x,list.get(i).y, p);
}
}
}
}
////////////////////////////////////////////////////////////////이렇게 b에 0이 들어가며 검은색 1이들어가면 빨강색 이런식으로 짰는대요 문제는
검은색으로 그리다가 빨강색을 선택한뒤 빨간색으로 그리면 전에 그렸던 검은색도 빨강색으로 변하네요 ㅠ
둘중에 한가지라도 아신다면 가르켜주시면 감사하겠습니다




xml상에서 btn01에 image를 백그라운드등으로 설정하셨다면 getter method(getBackground()등..) 를 써주셔야지 cache를 사용하는 건 아닌 것 같습니다.
그리고 밑에 문제는 메모로 검색해보시면 꽤 많은 토픽을 찾을수 있으실 겁니다.