Tôi đang cố gắng phát triển một lớp biểu đồ hình tròn đơn giản cho android. Bây giờ, nó có thể lấy một bản đồ của các nhãn và các giá trị và vẽ biểu đồ hình tròn. Tôi chưa thêm các truyền thuyết cho chiếc bánh, đó là nơi tôi cần phải đặt các văn bản gần hình chữ nhật nhỏ trên góc màn hình. Bất kỳ trợ giúp nào được đánh giá cao, vì tôi là người mới sử dụng Android dev.Làm cách nào để vẽ văn bản trên canvas?
Trả lời
Bạn sẽ phải sử dụng phương thức drawText của lớp Canvas.
Paint paint = new Paint();
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(16);
canvas.drawText("My Text", x, y, paint);
Dưới đây là các tài liệu liên quan về nó:
khác (cho là tốt hơn) cách để vẽ văn bản trên một canvas là sử dụng một StaticLayout
. Điều này xử lý văn bản nhiều dòng khi cần.
String text = "This is some text.";
TextPaint textPaint = new TextPaint();
textPaint.setAntiAlias(true);
textPaint.setTextSize(16 * getResources().getDisplayMetrics().density);
textPaint.setColor(0xFF000000);
int width = (int) textPaint.measureText(text);
StaticLayout staticLayout = new StaticLayout(text, textPaint, (int) width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0, false);
staticLayout.draw(canvas);
TextPaint
và StaticLayout
được khởi tạo ngay trước khi được sử dụng ở đây để minh hoạ. Làm như vậy trong onDraw
sẽ làm tổn thương hiệu suất, mặc dù. Here is a better example hiển thị chúng trong ngữ cảnh của chế độ xem tùy chỉnh vẽ văn bản riêng của nó.
Có một câu trả lời khác ở đây đã bị xóa vì đó chỉ là một liên kết. Liên kết gốc là here. Mã cơ bản là giống nhau, nhưng tôi đã lấy ra các phần bản vẽ không phải văn bản và cũng tăng kích thước để làm việc tốt hơn trên mật độ màn hình hiện đại.
Điều này chỉ hiển thị một vài điều bạn có thể làm với bản vẽ văn bản.
Đây là mã Cập nhật:
public class MainActivity extends AppCompatActivity {
DemoView demoview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
demoview = new DemoView(this);
setContentView(demoview);
}
private class DemoView extends View {
public DemoView(Context context){
super(context);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// custom drawing code here
// remember: y increases from top to bottom
// x increases from left to right
int x = 0;
int y = 0;
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
canvas.save();
canvas.translate(100, 200);
// make the entire canvas white
canvas.drawColor(Color.WHITE);
// draw some text using STROKE style
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);
paint.setColor(Color.MAGENTA);
paint.setTextSize(100);
canvas.drawText("Style.STROKE", 0, 0, paint);
canvas.translate(0, 200);
// draw some text using FILL style
paint.setStyle(Paint.Style.FILL);
//turn antialiasing on
paint.setAntiAlias(true);
//paint.setTextSize(30);
canvas.drawText("Style.FILL", 0, 0, paint);
canvas.translate(0, 200);
// draw some rotated text
// get text width and height
// set desired drawing location
x = 75;
y = 185;
paint.setColor(Color.GRAY);
//paint.setTextSize(25);
String str2rotate = "Rotated!";
// draw bounding rect before rotating text
Rect rect = new Rect();
paint.getTextBounds(str2rotate, 0, str2rotate.length(), rect);
canvas.translate(x, y);
paint.setStyle(Paint.Style.FILL);
// draw unrotated text
canvas.drawText("!Rotated", 0, 0, paint);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(rect, paint);
// undo the translate
canvas.translate(-x, -y);
// rotate the canvas on center of the text to draw
canvas.rotate(-45, x + rect.exactCenterX(),
y + rect.exactCenterY());
// draw the rotated text
paint.setStyle(Paint.Style.FILL);
canvas.drawText(str2rotate, x, y, paint);
//undo the translation and rotation
canvas.restore();
}
}
}
Cái gì khác mà tôi muốn thử sau là drawing text along a path.
Xem thêm this fuller answer here cung cấp hình ảnh sau đây.
- 1. Vẽ văn bản trên Canvas ở góc
- 2. Vẽ văn bản trong canvas
- 3. Làm cách nào để vẽ văn bản in nghiêng trên canvas Android?
- 4. Làm cách nào để nhập văn bản trên Canvas?
- 5. Làm thế nào để bạn vẽ văn bản trên một thẻ <canvas> trong Safari
- 6. vẽ văn bản "ellipsized" vào canvas
- 7. canvas html5 - Làm cách nào để kéo dài văn bản?
- 8. Làm cách nào để vẽ văn bản in đậm trên Bitmap?
- 9. Làm thế nào để vẽ văn bản trên picturebox?
- 10. Cách vẽ hoa văn trên canvas khi kéo ngón tay
- 11. Làm thế nào để vẽ đường lưới trên WPF Canvas?
- 12. Vẽ văn bản bằng nét ngoài với canvas của HTML5
- 13. Tính kích thước văn bản trước khi vẽ lên canvas
- 14. Làm cách nào để vẽ văn bản bằng Libgdx/Java?
- 15. đo văn bản trên canvas thu nhỏ
- 16. Vẽ văn bản bên trong Arc bằng canvas
- 17. Bao gói văn bản dài trên Canvas Android
- 18. Làm cách nào để cắt một phần của văn bản trong canvas HTML5?
- 19. Làm cách nào để viết văn bản ở trên cùng của hình ảnh trong canvas HTML5?
- 20. html canvas: cắt và văn bản
- 21. Làm cách nào để ghi đè cài đặt ClearType khi vẽ văn bản bằng API Win32?
- 22. Cách vẽ đa giác trên canvas HTML5?
- 23. Vẽ Chín Bản vá lên Canvas (Android)
- 24. Hiệu quả về bản vẽ canvas android
- 25. Văn bản dọc trong Tkinter Canvas
- 26. làm thế nào để vẽ văn bản với màu nền bằng vải
- 27. Làm cách nào để vẽ trên Canvas có Độ trong suốt và Độ mờ?
- 28. Làm cách nào để vẽ hình ảnh được xoay trên Canvas JavaFX?
- 29. Làm cách nào để vẽ một đường trên canvas trong WPF có độ dày 1 pixel
- 30. Vẽ Canvas - Làm cách nào để tôi có thể Cải thiện thói quen Vẽ Bản alpha này?