- Forum-Beiträge: 615
04.03.2021, 11:04:00 via Website
04.03.2021 11:04:00 via Website
Hallo zusammen
Ich möchte eine Zeichnung auf einer Zeichnung machen. Was muss ich machen, dass die zweite Zeichnung ebenfalls dargestellt wird?
package ch.robbisoft.kompass;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.TypedValue;
import android.view.View;
public class KompassnadelView extends View {
private float winkel=0;
private float werty=0;
private float wertz=0;
private Paint zeichenfarbe = new Paint();
private Paint textPaint;
private Paint kreisPaint;
public float getWerty() {
return werty;
}
public void setWerty(float werty) {
this.werty = werty;
}
public float getWertz() {
return wertz;
}
public void setWertz(float wertz) {
this.wertz = wertz;
}
public float getWinkel() {
return winkel;
}
public void setWinkel(float winkel) {
this.winkel = winkel;
invalidate();
}
public KompassnadelView(Context context) {
super(context);
zeichenfarbe.setAntiAlias(true);
zeichenfarbe.setColor(Color.WHITE);
zeichenfarbe.setStyle(Paint.Style.FILL);
//Schreibfarbe
textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
textPaint.setColor(Color.MAGENTA);
textPaint.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics()));
textPaint.setTextAlign(Paint.Align.LEFT);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
Canvas pfeil = new Canvas();
pfeil.drawColor(Color.BLUE);
int breite = canvas.getWidth();
int hoehe = canvas.getHeight();
// Den kleineren der beiden Werte
int laenge = Math.min(breite, hoehe);
int kurz = laenge - 20;
Path pfad = new Path();
pfad.moveTo(0, -kurz/2);
pfad.lineTo(kurz/20, kurz/2);
pfad.lineTo(-kurz/20, kurz/2);
pfad.close();
canvas.translate(breite / 2, hoehe / 2);
// canvas.rotate(winkel);
// canvas.drawPath(pfad, zeichenfarbe);
pfeil.drawPath(pfad, zeichenfarbe);
//Kreis Zeichnen
kreisPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
kreisPaint.setColor(Color.YELLOW);
kreisPaint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(0, 0, (laenge / 2), kreisPaint);
//Text ausgeben
Paint.FontMetrics metric = textPaint.getFontMetrics();
int textHeight = (int) Math.ceil(metric.descent - metric.ascent);
int y = (int)(textHeight - metric.descent);
canvas.drawText(String.format("%.2f°",winkel), -50, -1 * ((laenge / 2) + y), textPaint);
// canvas.drawText(Float.toString(werty), 0, y+100, textPaint);
// canvas.drawText(Float.toString(wertz), 0, y+200, textPaint);
//Kreiseinteilung
kreisPaint.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics()));
canvas.drawText("±0°", 0, -1 * (laenge / 2), kreisPaint);
canvas.drawText("-90°", -1* (laenge / 2), 0, kreisPaint);
canvas.drawText("±180°", 0, (laenge / 2), kreisPaint);
canvas.drawText("90°", (laenge / 2), 0, kreisPaint);
}
}
Was muss ich machen, dass der Canvas "pfeil" ebenfalls dargestellt wird.
Gruss Renato
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.