Android
Farbe
Suche…
Einführung
Eine Farbe ist eines der vier zum Zeichnen erforderlichen Objekte, zusammen mit einem Canvas (für Zeichnungsaufrufe), einer Bitmap (enthält die Pixel) und einem Zeichnungsgrundelement (Rect, Path, Bitmap ...)
Einen Anstrich erstellen
Sie können einen neuen Anstrich mit einem dieser drei Konstruktoren erstellen:
-
new Paint()Mit Standardeinstellungen erstellen -
new Paint(int flags)Mit Flags erstellen -
new Paint(Paint from)Kopiert die Einstellungen von einer anderen Farbe
Im Allgemeinen wird empfohlen, niemals ein Paint-Objekt oder ein anderes Objekt in onDraw () zu erstellen, da dies zu Leistungsproblemen führen kann. (Android Studio wird Sie wahrscheinlich warnen.) Machen Sie es stattdessen global und initialisieren Sie es in Ihrem Klassenkonstruktor wie folgt:
public class CustomView extends View {
private Paint paint;
public CustomView(Context context) {
super(context);
paint = new Paint();
//...
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(0xFF000000);
// ...
}
}
Einrichten von Paint für Text
Textzeichnungseinstellungen
-
setTypeface(Typeface typeface)die Schriftart fest. Siehe Schriftbild -
setTextSize(int size)die Schriftgröße in Pixel fest. -
setColor(int color)die Farbe der Zeichenfarbe einschließlich dersetColor(int color). Sie können auchsetARGB(int a, int r, int g, int bundsetAlpha(int alpha) -
setLetterSpacing(float size)den Abstand zwischen den Zeichen in ems fest. Der Standardwert ist 0, ein negativer Wert wird den Text enger machen, während ein positiver den Text erweitert. -
setTextAlign(Paint.Align align)Textausrichtung relativ zum Ursprung fest.Paint.Align.LEFTzeichnet es rechts vom Ursprung,RIGHTzeichnet es nach links undCENTERzeichnet es zentriert auf den Ursprung (horizontal). -
setTextSkewX(float skewX)Dies kann als gefälschte Kursivschrift betrachtet werden. SkewX steht für den horizontalen Versatz des unteren Texts. (Verwenden Sie -0,25 für Kursivschrift) -
setStyle(Paint.Style style)Füllen Sie den TextFILL, den Stroke-TextSTROKEoder beideFILL_AND_STROKE
Beachten Sie, dass Sie TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics()) zum Konvertieren von SP oder DP in Pixel verwenden können.
Text messen
-
float width = paint.measureText(String text)die Breite des Textes -
float height = paint.ascent()Messen Sie die Höhe des Texts -
paint.getTextBounds(String text, int start, int end, Rect boundsSpeichert diepaint.getTextBounds(String text, int start, int end, Rect bounds. Sie haben das Rect zugewiesen, es darf nicht null sein:
String text = "Hello world!";
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
Es gibt andere Messmethoden, diese drei sollten jedoch für die meisten Zwecke geeignet sein.
Einrichten von Paint zum Zeichnen von Formen
-
setStyle(Paint.Style style)Gefüllte FormFILL,STROKEoder beideFILL_AND_STROKE -
setColor(int color)die Farbe der Zeichenfarbe fest. Sie können auchsetARGB(int a, int r, int g, int bundsetAlpha(int alpha) -
setStrokeCap(Paint.Cap cap)ROUND,SQUAREoderBUTT(keine). Siehe dies . -
setStrokeJoin(Paint.Join join)Setzt Linienverbindungen entwederMITER(pointy),ROUNDoderBEVEL. Sehen Sie das hier . -
setStrokeMiter(float miter)Join-Grenze fest. Dies kann verhindern, dass die Gehrungsverknüpfung unbegrenzt fortfährt und nach x Pixel in eine Abschrägungsverknüpfung umgewandelt wird. Sehen Sie das hier . -
setStrokeWidth(float width)Strichbreite ein.0wird unabhängig von der Canvas-Matrix im Hairline-Modus gezeichnet. (immer 1 Pixel)
Flags setzen
Sie können die folgenden Flags im Konstruktor oder mit setFlags(int flags)
-
Paint.ANTI_ALIAS_FLAGAntialiasingPaint.ANTI_ALIAS_FLAG, glättet die Zeichnung. -
Paint.DITHER_FLAGDitheringPaint.DITHER_FLAG. Wenn die Farbgenauigkeit höher ist als die des Geräts, wird dies passieren . -
Paint.EMBEDDED_BITMAP_TEXT_FLAGErmöglicht die Verwendung von Bitmap-Schriftarten. -
Paint.FAKE_BOLD_TEXT_FLAGzeichnet Text mit einem gefälschtenPaint.FAKE_BOLD_TEXT_FLAGkann anstelle einer Fettschrift verwendet werden. Einige Schriftarten sind fett dargestellt, fake fett nicht -
Paint.FILTER_BITMAP_FLAGdie Umwandlung von Bitmaps. -
Paint.HINTING_OFF,Paint.HINTING_ONSchaltet die Schriftarthinweise um, siehe dies -
Paint.LINEAR_TEXT_FLAGDeaktiviert die Schriftskalierung. Zeichnen wird stattdessen skaliert -
Paint.SUBPIXEL_TEXT_FLAGText wird mit Subpixel-Genauigkeit berechnet. -
Paint.STRIKE_THRU_TEXT_FLAGgezeichnete Text wird markiert -
Paint.UNDERLINE_TEXT_FLAGgezeichnete Text wird unterstrichen
Sie können eine Flagge hinzufügen und Flaggen wie folgt entfernen:
Paint paint = new Paint();
paint.setFlags(paint.getFlags() | Paint.FLAG); // Add flag
paint.setFlags(paint.getFlags() & ~Paint.FLAG); // Remove flag
Wenn Sie versuchen, ein Flag zu entfernen, das nicht vorhanden ist, oder das Hinzufügen eines Flag, das bereits vorhanden ist, ändert dies nichts. Beachten Sie auch, dass die meisten Flags auch mit set<Flag>(boolean enabled) , beispielsweise setAntialias(true) .
Sie können paint.reset() , um die Farbe auf die Standardeinstellungen zurückzusetzen. Das einzige Standardflag ist EMBEDDED_BITMAP_TEXT_FLAG . Es wird auch eingestellt, wenn Sie einen new Paint(0)