Các API Brush cung cấp cho bạn các công cụ để xác định kiểu hình ảnh của nét vẽ. Bạn có thể tạo bút vẽ với nhiều màu sắc, kích thước và nhóm khác nhau để đạt được nhiều kiểu dáng.
Kỹ năng Android
Xem trên GitHubTạo bút vẽ Mực tuỳ chỉnh
ink-custom-brush-builder kỹ năng Android để thiết kế các kiểu BrushFamily tuỳ chỉnh trong Jetpack Compose bằng các đầu bút, hành vi động, kết cấu và lớp phủ tuỳ chỉnh.android skills add ink-custom-brush-builderTạo bút vẽ
Để tạo bút vẽ, hãy sử dụng các phương thức đồng hành Brush của Compose với các đối số được đặt tên như Brush.Companion.createWithComposeColor.
Lớp này cho phép bạn đặt các thuộc tính sau:
family: Kiểu của bút vẽ, tương tự như kiểu chữ hoặc phông chữ trong văn bản. Hãy xemStockBrushesđể biết các giá trịBrushFamilyhiện có.color: Màu cọ vẽ. Bạn có thể đặt màu bằng cách sử dụngColorLong.size: Độ dày tổng thể của nét vẽ được tạo bằng bút vẽ.epsilon: Khoảng cách nhỏ nhất mà hai điểm nên được coi là khác biệt về mặt hình ảnh cho mục đích hình học tạo nét vẽ. Tỷ lệ giữa epsilon và điểm nét vẽ kiểm soát mức độ phóng to của nét vẽ mà không có cấu phần phần mềm, với chi phí bộ nhớ. Điểm xuất phát phù hợp cho đơn vị nét vẽ là 1 px và điểm xuất phát phù hợp cho epsilon là 0, 1. Giá trị epsilon cao hơn sẽ sử dụng ít bộ nhớ hơn nhưng cho phép thu phóng ít hơn trước khi các cấu phần phần mềm hình tam giác xuất hiện. Hãy thử nghiệm để tìm giá trị phù hợp cho trường hợp sử dụng của bạn.
val brush = Brush.createWithComposeColor( family = StockBrushes.pressurePen(), color = Color.Black, size = 5F, epsilon = 0.1F )
Sửa đổi thuộc tính của bút vẽ
Bạn có thể tạo bản sao của một bút vẽ hiện có bằng phương thức copyWithComposeColor(). Phương thức này cho phép bạn thay đổi bất kỳ thuộc tính nào của bút vẽ.
val redBrush = Brush.createWithComposeColor( family = StockBrushes.pressurePen(), color = Color.Red, size = 5F, epsilon = 0.1F ) val blueBrush = redBrush.copyWithComposeColor(color = Color.Blue)
Bút vẽ tuỳ chỉnh
Mặc dù StockBrushes cung cấp một bộ bút vẽ phổ biến linh hoạt, nhưng Ink API cũng cung cấp một đường dẫn nâng cao để tạo hành vi bút vẽ hoàn toàn mới cho các hiệu ứng nghệ thuật độc đáo hoặc để sao chép các bút vẽ hiện có cụ thể nhằm đảm bảo khả năng tương thích ngược.
BrushFamily tuỳ chỉnh được tải từ định dạng chuyển đổi tuần tự của nó. Định dạng bắt buộc là mã hoá nhị phân nén gzip của vùng đệm giao thức BrushFamily. Nhờ đó, bạn có thể tải và sử dụng
các tệp bút vẽ tuỳ chỉnh ngay hôm nay. Sau khi được giải tuần tự, bạn có thể dùng BrushFamily tuỳ chỉnh để tạo một Brush mới có màu và kích thước cụ thể, giống như bất kỳ bộ phông chữ StockBrushes nào.
class CustomBrushes(val context: Context) { companion object { private const val TAG = "CustomBrushes" } val brushes by lazy { loadCustomBrushes() } @OptIn(ExperimentalInkCustomBrushApi::class) private fun loadCustomBrushes(): List<CustomBrush> { val brushFiles = mapOf( "Calligraphy" to (R.raw.calligraphy to R.drawable.draw_24px), "Flag Banner" to (R.raw.flag_banner to R.drawable.flag_24px), "Graffiti" to (R.raw.graffiti to R.drawable.format_paint_24px), // ... ) val loadedBrushes = brushFiles.mapNotNull { (name, pair) -> val (resourceId, icon) = pair val brushFamily = context.resources.openRawResource(resourceId).use { inputStream -> BrushFamily.decode(inputStream) } CustomBrush(name, icon, brushFamily) } return loadedBrushes } } data class CustomBrush( val name: String, val icon: Int, val brushFamily: BrushFamily )