Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Problem mit Canvas

Das Thema "Problem mit Canvas" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 14.01.2012, 11:50   #1 (permalink)
Neuer Benutzer

Registriert seit: 14.01.2012
Beiträge: 4
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Problem mit Canvas

Hallo.

Dieser nichtssagende Threadtitel tut mir Leid aber ich wusste nicht, wie ich das Problem in nur ein paar Worten beschreiben sollte.

Vorne weg:
Wir vor ein paar Wochen in der Schule angefangen für Android zu programmieren. Inzwischen bin ich gerade dabei, eine kleine App zu schreiben. Jetzt bin ich aber an einem Punkt angekommen, an dem ich nicht mehr weiter weiß. Deswegen habe ich mich hier angemeldet. Ich hoffe ihr könnt mir helfen.

Hintergrund ist folgender:
Meine App soll, sobald sie mal fertig ist, linien zeichnen. In der Mittel soll ein kleiner Punkt zu sehen sein. Berühre ich nun den Bildschirm an einer Stelle, soll sich der Punkt langsam zu dem Punkt bewegen, an dem ich den Bildschirm berührt hab. Dabei soll aber eine Linie entstehen. So in etwa wie beim Programm "Paint", wenn man die Maustaste drückt und dann den Pinsel bewegt.

Mein Problem:
Mein Punkt bewegt sich zwar und wird auch neu gezeichnet aber die "alten" Punkte, also die mit den vorherigen Koordinaten verschwinden, sobald der Punkt neu gezeichnet wird. Das sieht dann wie bei Pong aus. Einfach nur ein Punkt, der sich bewegt. Ich will aber, dass sich eine Linie hinter dem Punkt bildet.

Ich hoffe, dass war einigermaßen verständlich. Falls nicht versuch ichs nochmal zu erklären.

Ich habe dazu eine neue Klasse erstellt, in der ich den Punkt mit canvas.drawCircle... zeichnen lasse.
Das was relevant ist sieht so aus:

Zitat:
public class Panel extends View {
public Panel(Context context) {
super(context);

ball = new Paint();
ball.setColor(Color.WHITE);
ball.setAntiAlias(true);

}


@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(x, y, Radius, ball);
invalidate();
}

}
Alles unwichtige, wie irgendwelche Berechnungen hab ich jetzt mal rausgelöscht.

Meine Activity sieht derweil so aus:
Zitat:
public class ADKActivity extends Activity implements OnTouchListener{

Panel p;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

p = new Panel(this);

p.setOnTouchListener(this);

setContentView(R.layout.main);

LinearLayout layout = (LinearLayout) findViewById(R.id.Panel);
layout.addView(p);

}
}
Auch hier hab ich alles unwichtige entfernt. Der Übersicht halber.

Hat da jemand eine Ahnung wie ich das hinkrieg, dass ich die Linie gezeichnet krieg? Google spuckt dazu nix mehr aus und was nützliches hab ich bisher auch nicht gefunden. Hoffe ihr könnt mir helfen.

MfG
SoSchautsAus ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:24   #2 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Problem gelöst / Frage beantwortet AW: Problem mit Canvas

Hallo,

du musst Dir die Positionen der Punkte auch merken!

z.B:
PHP-Code:

private ArrayList<MeinPunktObjektarPo = new ArrayList<MeinPunktObjekt>();
...

public 
Panel(Context contextMeinPunktObjekt mpo) {
  
super(context);
 
  
arPo.add(mpo); 
  
ball = new Paint();
  
ball.setColor(Color.WHITE);
  
ball.setAntiAlias(true);
 
    }
...

@
Override
protected void onDraw(Canvas canvas) {
  
canvas.drawCircle(xyRadiusball);
  foreach(
MeinPunktObjekt mpo arPo) {
     
canvas.drawCircle(mpo.getX(), mpo.getY(), Radiusball); 
  }

  
invalidate();
}
... 
So in etwa, Du musst natürlich das fertig schreiben. Auch brauchst du ein MeinPunktObjekt.

Grüße Bobert
Bobert ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:37   #3 (permalink)
Neuer Benutzer

Registriert seit: 14.01.2012
Beiträge: 4
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: Problem mit Canvas

Danke erstmal für die Antwort.

Ich find die Lösung aber recht umständlich. Wenn ich das in "normalen" Java machen wollte wäre das kein Problem. Wenn ich da zwei Punkte zeichne verschwindet der, den ich als erstes Zeichne nicht, sobald ich den zweiten Zeichne. Ich hab so den Eindruck, dass das ganze im Moment (also Android) so abläuft:
Punkt wird gezeichnet.
Komplettes Fenster wird mit schwarz übermalt.
Punkt mit neuen Koordinaten wird gezeichnet.
Komplettes Fenster wird mit schwarz übermalt.
Punkt mit neuen Koordinaten wird gezeichnet usw.
...
SoSchautsAus ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:44   #4 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Standard AW: Problem mit Canvas

Du kannst es auch gerne einfacher machen :-)
Bobert ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:47   #5 (permalink)
Neuer Benutzer

Registriert seit: 14.01.2012
Beiträge: 4
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: Problem mit Canvas

Ne so war das nicht gemeint ^^
Ich seh das so:
ich hab ein Layout. Mit canvas.draw... mal ich auf diesem Layout einen Kreis. Nach einer bestimmten Zeit male ich auf diesem Layout nochmal ein Kreis. Und ich versteh nicht, warum der erste Kreis, den ich gezeichnet habe verschwindet, sobald ich den zweite Kreis zeichne.
SoSchautsAus ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:54   #6 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Standard AW: Problem mit Canvas

Du siehst ja das es nicht so ist,
Zitat:
Ich seh das so
wie Du es siehst .... :-)
Bobert ist offline   Mit Zitat antworten
Alt 14.01.2012, 14:59   #7 (permalink)
Neuer Benutzer

Registriert seit: 14.01.2012
Beiträge: 4
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard AW: Problem mit Canvas

Also gibts ehrlich keine Möglichkeit zu verhindern, dass er mir meinen Kreis immer übermalt? Außer halt alles abzuspeichern.
SoSchautsAus ist offline   Mit Zitat antworten
Alt 14.01.2012, 15:09   #8 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Bobert

Modell: Nexus S

Registriert seit: 21.11.2010
Beiträge: 162
Abgegebene Danke: 9
Erhielt 15 Danke für 15 Beiträge
Standard AW: Problem mit Canvas

manchmal ist es besser mit der 2 besten Lösung in 5 Minuten fertig zu sein.
Als 2 Tage über die beste Lösung zu Grübeln ....
Bobert ist offline   Mit Zitat antworten
Alt 16.01.2012, 08:13   #9 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Sensation

Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
Standard AW: Problem mit Canvas

das hab ich aus meinem programm kopiert:

Code:
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (event.getAction() == MotionEvent.ACTION_DOWN) {
			drawPoint(event.getX(), event.getY(), event.getPressure());
			return true;
		}
		else if (event.getAction() == MotionEvent.ACTION_UP) {
			drawing = false;
			return true;
		}
		else if (event.getAction() == MotionEvent.ACTION_MOVE) {
			drawing = true;
			drawPoint(event.getX(), event.getY(), event.getPressure());
			return true;			
		}
		
		return false;
	}
	
	private void drawPoint(float x, float y, float pressure) {
		if (bitmap != null) {			
			paint.setColor(Color.BLACK);
			paint.setStrokeWidth(thickness);
            if (drawing) {
            	canvas.drawLine(lastX, lastY, x, y, paint);
            }
            else {
            	canvas.drawPoint(x, y, paint);
            }

        	lastX = x;
        	lastY = y;

        	isChanged = true;
        	
            invalidate();
        }
	}
Tom299 ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Canvas power_paul Android App Entwicklung 4 06.11.2011 18:46
Canvas Bitmap Problem error Android App Entwicklung 10 24.06.2011 09:10
Mit canvas ein Bild an beliebiger Stelle zeichnen chrissooo Android App Entwicklung 2 28.05.2010 15:44
Transparenter Canvas manu Android App Entwicklung 2 09.01.2010 14:10
Probleme mit canvas und draw HectorSavage Android App Entwicklung 1 17.09.2009 15:21




Du liest gerade: "Problem mit Canvas" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.