2012-02-25 154 views
0

我在通過圖像視圖繪製矩形時遇到問題。這是代碼的和平。 Xml也在那裏。我的整個擔憂是,如果我們能夠通過imageview繪製矩形。無法在圖像視圖上繪製矩形

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) – 2012-02-25 13:10:24

+0

所以..?我有任何問題哈..?沒有人在那裏回答,所以已經發布這種方式.. F> O – arun 2012-02-25 13:19:49

+0

有點容易冒犯了,我們?是的,停止垃圾郵件問題。如果你沒有得到任何答案,這可能是因爲你沒有給它足夠的時間(1小時通常是不夠的),或者你的問題缺乏一些質量*(它的確如此,幾乎沒有解釋你正在嘗試做什麼;如果沒有人能弄清楚你想要什麼,他們不能幫你)*。 – 2012-02-25 13:23:04

回答

2

你的方法createRectInView(View v)不超過ImageView的繪製一個矩形,它只是創造一個畫布,繪製畫布上的一個矩形,然後繪製的ImageView的是帆布上的內容,所以它不會做你期望的。

這裏是一個可能的解決方案:你可以擴展的ImageView並覆蓋其的onDraw()方法,例如..

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()方法爲:使用裁剪矩形圖像]的

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 2012-02-25 12:51:34

+0

嗨arun,更新了答案,希望它有幫助。 – 2012-02-25 13:05:58

+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 2012-02-25 13:15:33