2017-06-21 6 views
0

Ich habe ein Problem mit einer benutzerdefinierten Ansicht, die ich benutze. Es zeichnet ein Raster, das ich benutze, um einen Grundriss darzustellen, mit einem Anfang und einer aktuellen Position darauf (farbige Rechtecke). (Code hier: https://pastebin.com/8SExmtAp).android customview overriden onDraw(): Leinwand zeichnet alle Rechtecke schwarz

Kurz gesagt, ich initialisieren verschiedene Farben wie folgt aus:

private void initPaints() 
{ 
    waypointPaint = new Paint(Color.parseColor("#800080")); 
    currentCoordinatePaint = new Paint(Color.RED); 
    linePaint = new Paint(Color.BLACK); 
    startCoordinatePaint = new Paint(Color.BLUE); 
} 

und sie in OnDraw() wie folgt aus:

// color the current coordinates 
    Coordinates currentCoords = Model.getCurrentCoordinates(); 
    if (currentCoords != null) 
    { 
       canvas.drawRect((float) currentCoords.getX() * cellWidth, (float) currentCoords.getY() * cellHeight, 
         (float) (currentCoords.getX() + 1) * cellWidth, (float) (currentCoords.getY() + 1) * cellHeight, 
         currentCoordinatePaint); 

    } 

    Coordinates startCoordinate = Model.startCoordinate; 
    if (startCoordinate != null && startCoordinate != currentCoords) 
    { 
     canvas.drawRect((float) startCoordinate.getX() * cellWidth, (float) startCoordinate.getY() * cellHeight, 
       (float) (startCoordinate.getX() + 1) * cellWidth, (float) (startCoordinate.getY() + 1) * cellHeight, 
       startCoordinatePaint); 
    } 

jedoch stattdessen eine blaue für federt des Erhaltens und eine rote für die aktuelle Position, beide sind schwarz, siehe: Screenshot of app

Die Dokumentation über die DrawRect (...) Methode verwende ich nur s tates das folgende:

Zeichnen Sie das angegebene Rect mit der angegebenen Farbe. Das Rechteck wird basierend auf dem Stil in der Farbe ausgefüllt oder umrahmt.

So..ich sehe nicht wirklich, wo der Code falsch ist und warum ich das Ergebnis bekomme, das ich bekomme. Vielleicht weiß jemand von euch warum?

Antwort

0

erwartet int-Flags als Parameter, nicht die Füllfarbe.

Versuchen:

currentCoordinatePaint = new Paint(); 
currentCoordinatePaint.setStyle(Paint.Style.FILL); 
currentCoordinatePaint.setColor(Color.RED); 
+0

Ohhh ... Ich verstehe. Ich werde es versuchen, sobald ich wieder nach Hause komme. Danke – DerDingens

+0

fast vergessen zu melden. Du hattest vollkommen recht, wenn du die Farbinitialisierung änderst. – DerDingens

0

Wie josef.adamcik statet, ich war falsch über die Konstrukteurs-i für die Lackobjekte verwendet. Ändern des Codes zu

private void initPaints() 
    { 
     waypointPaint = new Paint(); 
     waypointPaint.setColor(Color.GREEN); 
     waypointPaint.setStyle(Paint.Style.FILL); 
     currentCoordinatePaint = new Paint(); 
     currentCoordinatePaint.setColor(Color.RED); 
     currentCoordinatePaint.setStyle(Paint.Style.FILL); 
     linePaint = new Paint(); 
     linePaint.setColor(Color.BLACK); 
     linePaint.setStyle(Paint.Style.STROKE); 
     startCoordinatePaint = new Paint(); 
     startCoordinatePaint.setColor(Color.BLUE); 
     startCoordinatePaint.setStyle(Paint.Style.FILL); 
    } 

tat den Trick.

Verwandte Themen