- Forum-Beiträge: 602
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