2012-02-25 4 views
0

이미지 뷰 위에 직사각형을 그리는 데 문제가 있습니다. 여기에 코드의 평화가 있습니다. Xml도 있습니다. 내 모든 관심사는 우리가 이미지 뷰 위에 rect를 그릴 수 있는지 아닌지입니다. ??이미지 뷰 위에 사각형을 그릴 수 없습니다.

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.cropimage); 
      paint=new Paint(); 
      bobj = new BaldBooth1(); 
      bm = BaldBooth1.bMap; 
      d = new BitmapDrawable(bm); 
      iv = ((ImageView) findViewById(R.id.image)); 
      iv.setImageDrawable(d); 
      createRectInView(iv); 

      ((ImageButton) findViewById(R.id.next)).setOnClickListener(this); 

     } 
     public void createRectInView(View v) { 
      paint.setColor(Color.BLACK); 
      paint.setStrokeWidth(3); 
      canvas=new Canvas(); 
      canvas.drawRect(50, 50, 80, 80, paint); 
      v.draw(canvas); 


     } 
+0

가능한 중복 (http://stackoverflow.com/questions/9443300/cropping-image-using-rect) –

+0

그래서 .. ?? 나는 거기에 어떤 문제 하 ..? 거기에 아무도 대답하지 이렇게 그것을 게시했습니다 .. F> O – arun

+0

조금 쉽게 상처, 우리는 무엇입니까? 그리고 네, 스팸성 질문을 멈추십시오. 당신이 어떤 대답을 얻지 못한다면 아마도 충분한 시간을주지 않았기 때문일 것입니다. (1 시간은 충분하지 않습니다) 또는 질문에 약간의 품질이 부족합니다. 아무도 당신이 원하는 것을 알아낼 수 없다면, 그들은 당신을 도울 수 없습니다) *. –

답변

2

이미지 뷰를 통해 사각형을 그립니다하지 않습니다 createRectInView(View v) 귀하의 방법은, 그냥 당신이 무엇을 기대하지 않도록, 그 캔버스에 이미지 뷰의 내용을 그려, 그 캔버스에 사각형을 그립니다 캔버스를 만들 수 있습니다. 여기

은 하나의 가능한 해상도 : 당신이 이미지 뷰를 확장하고, 예를 들어, 자사의 onDraw() 메소드를 오버라이드 (override) 할 수 있습니다 ..

public class ExtendedImageView extends ImageView { 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(3); 
     canvas.drawRect(50, 50, 80, 80, paint); 
    } 
} 

업데이트 : 그것을

안녕 아 룬, 난 그냥 코드를 테스트하고, 잘 작동합니다. 예를 들어 com.abc.widget 패키지에 ExtendedImageView를 만들 수 있으므로 cropImage.xml 파일에서 <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content"><com.abc.widget.ExtendedImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content">으로 바꿉니다. 보시다시피 클래스 이름 만 변경하면됩니다. 이어서 같은 변화 onCreate() 방법 : [RECT를 사용하여 이미지를 크롭]의

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.cropimage); 
      bobj = new BaldBooth1(); 
      bm = BaldBooth1.bMap; 
      d = new BitmapDrawable(bm); 
      iv = ((ImageView) findViewById(R.id.image)); 
      iv.setImageDrawable(d); 
      ((ImageButton) findViewById(R.id.next)).setOnClickListener(this); 

     } 
+0

음 ... 네가 네 부분에있어.하지만 너의 해결책도 시도해 봤어. 나는 잘못한 방식으로 그것을하고있을 수 있습니다. 정교하게 부탁드립니다. – arun

+0

안녕하세요, 답변을 업데이트했습니다. 도움이되기를 바랍니다. –

+0

02-25 18 : 42 : 24.203 : E/AndroidRuntime (4013) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.my.baldbooth1/com.my.baldbooth1.CropImage} : android.view.InflateException : 이진 XML 파일 줄 # 9 : com.my.baldbooth1.ExpandableImageView 클래스를 확장하는 중 오류가 발생했습니다. – arun

관련 문제