2013-08-29 40 views
7

Tôi đang cố vẽ hình tròn trên hình ảnh được đặt là res/drawable/schoolboard.png. hình ảnh điền vào nền hoạt động. các tính năng sau không hoạt động:Vẽ một vòng tròn trên một hình ảnh hiện có

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.schoolboard); 
    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setColor(Color.BLUE); 

    Canvas canvas = new Canvas(bitmap); 
    canvas.drawCircle(60, 50, 25, paint); 

    ImageView imageView = (ImageView)findViewById(R.drawable.schoolboard); 
    imageView.setAdjustViewBounds(true); 
    imageView.setImageBitmap(bitmap); 

mọi trợ giúp sẽ được đánh giá cao. cảm ơn.

Trả lời

10

Có một số lỗi trong mã của bạn: đầu tiên của điều bạn không thể từ bỏ Id tài liệu tham khảo cho drawable trong findViewById vì vậy tôi nghĩ bạn có nghĩa là một cái gì đó như thế

ImageView imageView = (ImageView)findViewById(R.id.schoolboard_image_view); 

schoolboard_image_view là id hình ảnh trong bạn bố cục xml (kiểm tra bố cục của bạn để tìm đúng id)

BitmapFactory.Options myOptions = new BitmapFactory.Options(); 
    myOptions.inDither = true; 
    myOptions.inScaled = false; 
    myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;// important 
    myOptions.inPurgeable = true; 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.schoolboard,myOptions); 
    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setColor(Color.BLUE); 


    Bitmap workingBitmap = Bitmap.createBitmap(bitmap); 
    Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true); 


    Canvas canvas = new Canvas(mutableBitmap); 
    canvas.drawCircle(60, 50, 25, paint); 

    ImageView imageView = (ImageView)findViewById(R.id.schoolboard_image_view); 
    imageView.setAdjustViewBounds(true); 
    imageView.setImageBitmap(mutableBitmap); 

Hãy đảm bảo sử dụng đúng ID hình ảnh cho:

ImageView imageView = (ImageView) findViewById (R.id.schoolboard_image_view);

+1

Cảm ơn cả hai bạn! chaned tệp xml để có một lần xem hình ảnh, bởi vì trước khi hình ảnh bảng học được định nghĩa là 'android: background =" @ drawable/schoolboard "' trong RelativeLayout. bây giờ nó hoạt động! – Kfir

5

Trước hết, bạn cần tạo một bitmap mới, vì bitmap từ phương thức BitmapFactory.decodeResource() là không thay đổi. Bạn có thể thực hiện việc này bằng mã sau:

Bitmap canvasBitmap = Bitmap.createBitmap([bitmap_width], [bitmap_height], Config.ARGB_8888); 

Sử dụng bitmap này trong cấu trúc Canvas. Sau đó vẽ bitmap của bạn trên canvas.

Canvas canvas = new Canvas(canvasBitmap); 
canvas.drawBitmap(bitmap, 0, 0, bitmapPaint); 
canvas.drawCircle(60, 50, 25, paint); 

Ngoài ra R.drawable.schoolboard không phải là id chế độ xem chính xác.

ImageView imageView = (ImageView) findViewById (R.drawable.schoolboard);

Các vấn đề liên quan