ממשקי ה-API של Brush מספקים לכם את הכלים להגדרת הסגנון החזותי של הקווים. אתם יכולים ליצור מברשות עם צבעים, גדלים וסוגים שונים כדי להשיג מגוון מראה.
יצירת מברשת
כדי ליצור מברשת, משתמשים בשיטות הנלוות של Compose Brush עם ארגומנטים בעלי שם כמו Brush.Companion.createWithComposeColor.
המחלקות האלה מאפשרות להגדיר את המאפיינים הבאים:
-
family: הסגנון של המברשת, בדומה לטיפוגרפיה או לגופן בטקסט. בקטעStockBrushesמפורטים הערכים הזמינים שלBrushFamily. -
color: צבע המברשת. אפשר להגדיר את הצבע באמצעותColorLong. -
size: העובי הכולל של הקווים שנוצרו באמצעות המברשת. -
epsilon: המרחק הקטן ביותר שבו שתי נקודות צריכות להיחשב כנפרדות מבחינה ויזואלית למטרות גיאומטריה של יצירת קו. היחס בין אפסילון לבין נקודות המשיכות קובע עד כמה אפשר להגדיל את התצוגה של משיכה בלי שיופיעו ארטיפקטים, על חשבון הזיכרון. נקודת התחלה טובה ליחידות של שבץ היא 1 px, ונקודת התחלה טובה לאפסילון היא 0.1. ערכי אפסילון גבוהים יותר משתמשים בפחות זיכרון, אבל מאפשרים פחות הגדלה לפני שמופיעים ארטיפקטים של משולשים. מומלץ לערוך ניסויים כדי למצוא את הערך המתאים לתרחיש לדוגמה שלכם.
val brush = Brush.createWithComposeColor(
family = StockBrushes.pressure(),
colorIntArgb = Color.Black,
size = 5F,
epsilon = 0.1F
)
שינוי המאפיינים של המכחול
אפשר ליצור עותק של מברשת קיימת באמצעות השיטה copyWithComposeColor(), שמאפשרת לשנות את כל המאפיינים של המברשת.
val redBrush = Brush.createWithComposeColor(
family = StockBrushes.pressurePen(),
colorIntArgb = Color.RED,
size = 5F,
epsilon = 0.1F
)
val blueBrush = redBrush.copyWithComposeColor(color = Color.BLUE)
מברשות בהתאמה אישית
StockBrushes מספקת מגוון רחב של מברשות נפוצות, אבל Ink API מציעה גם דרך מתקדמת ליצירת התנהגויות חדשות לגמרי של מברשות, כדי ליצור אפקטים אמנותיים ייחודיים או לשכפל מברשות קיימות ספציפיות לצורך תאימות לאחור.
BrushFamily בהתאמה אישית נטען מהפורמט הסדרתי שלו. הפורמט הנדרש הוא קידוד בינארי דחוס ב-gzip של מאגר הפרוטוקולים BrushFamily. כך תוכלו לטעון ולהשתמש בקבצים של מברשות בהתאמה אישית. אחרי שמבטלים את הסריאליזציה, אפשר להשתמש ב-BrushFamily המותאם אישית כדי ליצור Brush חדש עם צבע וגודל ספציפיים, בדיוק כמו בכל משפחות StockBrushes.