لمساعدتك في إنشاء ضربات بطريقة Compose اصطلاحية، توفّر Ink API وحدات تشغيل تفاعلي مع Compose لإنشاء الفرشاة والأشكال الهندسية.
لرسم خط في Compose، استخدِم العنصر القابل للإنشاء InProgressStrokes الذي يتطلّب مثيلاً تلقائيًا للفرشاة وطريقة لتجاوز الفرشاة التلقائية ودالة ردّ نداء تعالج الخطوط المكتملة.
إعداد مكوّن واجهة المستخدم
InProgressStrokes( defaultBrush = currentBrush, nextBrush = onGetNextBrush, onStrokesFinished = onStrokesFinished, )التعامل مع الخطوط المكتملة
عندما تجفّ ضربات الفرشاة الرطبة، يتم تمريرها إلى التطبيق من خلال وسيطة معاودة الاتصال
onStrokesFinishedللدالةInProgressStrokes.يجب أن يمرّر تطبيقك الضربات المنتهية إلى عنصر Composable آخر ضمن سلسلة التعليمات البرمجية لواجهة المستخدم نفسها لتثبيتها على الشاشة.
@Composable fun DrawingScreen( finishedStrokes: List<Strokes>, onStrokesFinished: (List<Stroke>) -> Unit, currentBrush: Brush, onGetNextBrush: () -> Brush, modifier: Modifier = Modifier ) { val canvasStrokeRenderer = remember { CanvasStrokeRenderer.create() } Box(modifier = Modifier.fillMaxSize()) { // The Canvas for drawing the permanent, dry strokes. Canvas(modifier = Modifier.fillMaxSize()) { finishedStrokes.forEach { stroke -> canvasStrokeRenderer.draw( stroke = stroke, canvas = this, strokeToScreenTransform = Matrix() ) } } //The wet ink layer for live drawing. // The InProgressStrokes composable for the wet ink layer goes here. } }