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 b
undsetAlpha(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.LEFT
zeichnet es rechts vom Ursprung,RIGHT
zeichnet es nach links undCENTER
zeichnet 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-TextSTROKE
oder 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 bounds
Speichert 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
,STROKE
oder beideFILL_AND_STROKE
-
setColor(int color)
die Farbe der Zeichenfarbe fest. Sie können auchsetARGB(int a, int r, int g, int b
undsetAlpha(int alpha)
-
setStrokeCap(Paint.Cap cap)
ROUND
,SQUARE
oderBUTT
(keine). Siehe dies . -
setStrokeJoin(Paint.Join join)
Setzt Linienverbindungen entwederMITER
(pointy),ROUND
oderBEVEL
. 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.0
wird 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_FLAG
AntialiasingPaint.ANTI_ALIAS_FLAG
, glättet die Zeichnung. -
Paint.DITHER_FLAG
DitheringPaint.DITHER_FLAG
. Wenn die Farbgenauigkeit höher ist als die des Geräts, wird dies passieren . -
Paint.EMBEDDED_BITMAP_TEXT_FLAG
Ermöglicht die Verwendung von Bitmap-Schriftarten. -
Paint.FAKE_BOLD_TEXT_FLAG
zeichnet Text mit einem gefälschtenPaint.FAKE_BOLD_TEXT_FLAG
kann anstelle einer Fettschrift verwendet werden. Einige Schriftarten sind fett dargestellt, fake fett nicht -
Paint.FILTER_BITMAP_FLAG
die Umwandlung von Bitmaps. -
Paint.HINTING_OFF
,Paint.HINTING_ON
Schaltet die Schriftarthinweise um, siehe dies -
Paint.LINEAR_TEXT_FLAG
Deaktiviert die Schriftskalierung. Zeichnen wird stattdessen skaliert -
Paint.SUBPIXEL_TEXT_FLAG
Text wird mit Subpixel-Genauigkeit berechnet. -
Paint.STRIKE_THRU_TEXT_FLAG
gezeichnete Text wird markiert -
Paint.UNDERLINE_TEXT_FLAG
gezeichnete 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)