2012-11-09 26 views
6

Tôi có Hình ảnh 8x8. (bitmap - có thể được thay đổi)Mẫu bàn chải tùy chỉnh Android/hình ảnh

Điều tôi muốn làm là có thể vẽ một hình dạng, cho một đối tượng PathPaint lên số SurfaceView của tôi.

Hiện tại tất cả những gì tôi có thể làm là điền vào hình dạng với màu đồng nhất. Làm thế nào tôi có thể vẽ nó với một mẫu.

Example

Trong hình ảnh bạn có thể thấy mô hình bàn chải (Thập tự). Nó có thể là bất cứ điều gì từ một cây thánh giá để một chiếc bánh rán hoặc một elf.

Tôi sẽ làm cách nào để vẽ hình mẫu này.

Tôi cũng muốn áp dụng màu sắc cho nó.

Cho đến nay, lý thuyết của tôi là tạo vùng clip của hình dạng và xếp các bitmap cho đến khi vùng được bao phủ, nhưng điều này là quá mức cần thiết trong quá trình xử lý. Âm thanh cũng không lý tưởng.

Về mặt tô màu, tôi có thể chỉnh sửa bàn chải thành alpha, tô màu tương tự với màu nền, sau đó vẽ hình ảnh lên trên. Vấn đề thực sự nó là ốp lát của các mẫu như vậy.

Tôi đã tìm thấy một số câu hỏi có tính chất tương tự, tất cả đều chưa được trả lời và/hoặc không áp dụng được cho trường hợp của tôi. (sử dụng xml trên các lượt xem v.v.)

Trả lời

18

Bạn đã kiểm tra điều này blog. Nó sử dụng BitmapShader

Ví dụ:

//Initialize the bitmap object by loading an image from the resources folder 
    fillBMP = BitmapFactory.decodeResource(m_context.getResources(), R.drawable.cross); 
    //Initialize the BitmapShader with the Bitmap object and set the texture tile mode 
    fillBMPshader = new BitmapShader(fillBMP, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 

    fillPaint.setStyle(Paint.Style.FILL); 
    //Assign the 'fillBMPshader' to this paint 
    fillPaint.setShader(fillBMPshader); 

    //Draw the fill of any shape you want, using the paint object. 
    canvas.drawCircle(posX, posY, 100, fillPaint); 
+0

Bất kỳ đề nghị liên quan đến vấn đề hiệu suất? Vì bạn đang nhanh chóng vẽ bitmap trên canvas, điều này sẽ dẫn đến giao diện người dùng nặng. Gây hiệu suất rất chậm. –

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