2010-01-24 32 views
22

Tôi đang cố gắng vẽ một bản vá chín lên một đối tượng Canvas trên Android. Điều có vẻ lạ là mặc dù tôi đã tạo ra 9 bản vá của mình bằng cách sử dụng công cụ draw9patch, hàm tạo cho NinePatch yêu cầu một mảng byte bổ sung được gọi là "chunk" để xây dựng chín bản vá.Vẽ Chín Bản vá lên Canvas (Android)

Tại sao điều này không đơn giản hơn? "Chunk" là gì? Và nếu bạn đã làm điều này cho mình, làm thế nào bạn đi về nó?

Bất kỳ trợ giúp đánh giá cao.

Trả lời

73

Bạn có thể dễ dàng làm điều đó theo cách này:

// Load the image as a NinePatch drawable 
NinePatchDrawable npd = (NinePatchDrawable)Resources.getDrawable(R.drawable.my_nine_patch); 

// Set its bound where you need 
Rect npdBounds = new Rect(...); 
npd.setBounds(npbBounds); 

// Finally draw on the canvas 
npd.draw(canvas); 
+0

Nhưng tôi cần hình ảnh để phù hợp với một kích thước cụ thể. Nếu không tôi sẽ không sử dụng một bản vá chín. –

+7

Trong mã tôi đặt ở trên, đối tượng 'd' thực sự là một thể hiện của NinePatchDrawable vì bạn đã cho getDrawable ID của tài nguyên 9patch. Vì vậy, bạn có thể làm NinePatchDrawable npd = (NinePatchDrawable) d; Điều đó sẽ không hoạt động cho mục đích của bạn? –

+0

Chỉ cần thử nó: hoạt động hoàn hảo. Cảm ơn bạn rất nhiều –

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