Zeichnen von Kreisen in Xamarin.iOS (Xamarin Monotouch) zum grafischen Anzeigen des Fortschritts

7

Ich bin sehr neu in Xamarin Welt und neu in seiner Steuerung. Ich möchte in meiner Mono-Touch-App Kreise hinzufügen, um den Fortschritt der Arbeit anzuzeigen. Um Fortschritt anzuzeigen, muss ich einen Bogen im Kreis markieren. Und wenn irgend möglich kann mir jemand einen Beispielcode helfen. Warten auf eine Antwort, Vielen Dank im Voraus.

    
SARATH 29.07.2015, 07:03
quelle

3 Antworten

10

%Vor%

Eigentlich sollte ich das eigentlich machen. Es funktioniert für mich

So sieht es aus. Sie können es wie eine Klassendatei erstellen und einfach einer UIView zuweisen. Für mehr Referenz können Sie dieses Beispielprojekt Pi Graph

verwenden

[EDIT]: Die Methode Draw hat ursprünglich die View.Frame x, y an die Methode DrawGraph übergeben. Dies sollte View.Bounds sein (oben geändert, um dies widerzuspiegeln). Denken Sie daran, dass der Frame x, y sich auf die übergeordnete Ansicht bezieht und die Grenzen auf die aktuelle Ansicht verweisen. Dies hätte funktioniert, wenn die Ansicht bei 0,0 hinzugefügt wurde, aber sobald Sie anfangen, sich auf der Benutzeroberfläche zu bewegen, verschwindet sie. Wenn die Bögen gezeichnet werden, müssen sich die Werte für x, y, die an AddArc übergeben werden, auf die aktuelle Ansicht und nicht auf die übergeordnete Superansicht beziehen.

    
SARATH 14.08.2015, 09:57
quelle
8

Das Zeichnen eines Kreises auf einem GLContext ist nicht so schwierig und ist dasselbe wie in Objective-C oder Swift.

Ich nehme an, Sie möchten Ihre eigene Ansicht erstellen, die Sie wiederverwenden können. Erben Sie dazu einfach von UIView :

%Vor%

Um nun etwas in Ihrer neuen benutzerdefinierten Ansicht zu zeichnen, müssen Sie die Methode Draw überschreiben:

%Vor%

Um Dinge zu zeichnen, müssen Sie den aktuellen Kontext von UIGraphics erhalten, was wie folgt geschehen kann:

%Vor%

Das CGContext , das du zurückbekommst, ist dem Beispiel von Canvas auf Android sehr ähnlich. Es hat Hilfsmethoden, um Bögen, Kreise, Rechtecke, Punkte und vieles mehr zu zeichnen.

Um einen einfachen Kreis in diesem Kontext zu zeichnen, tun Sie Folgendes:

%Vor%

Kombiniere alles, was du bekommst:

%Vor%

Das ist es! Nun, nicht genau, hier müssen Sie anfangen darüber nachzudenken, wie Sie Ihren Fortschrittsindikator zeichnen möchten. Was ich denke, würde wahrscheinlich funktionieren:

  1. Zeichnen Sie den Hintergrund
  2. Zeichnen Sie die Grenzen
  3. Berechne die Grade aus dem Fortschritt in Prozent
  4. Verwenden Sie die Grade, um mit gctx.AddArc() einen Bogen zu erstellen, der einen Winkel einnehmen und einen Bogen zeichnen kann.
  5. Zeichnen Sie den Prozentsatz als eine Zeichenfolge in der Mitte

Um eine Zeichenkette zu zeichnen, müssen Sie Ihre Zeichenkette in NSAttributedString konvertieren und dann CTLine verwenden, um den Text wie folgt zu zeichnen:

%Vor%     
Cheesebaron 29.07.2015 13:36
quelle
0

Geringfügige Änderungen an der Antwort, die @SARATH beim Kopieren und Einfügen lieferte, führten nicht zum gewünschten Ergebnis.

Geändert von _degrad zu _percentComplete

Es wurde ein Überladungskonstruktor für das Ändern von Farben behoben, indem ein Parameter für ProzentKomplett hinzugefügt und fehlende Elementvariablenzuweisungen für _backColor und _frontColor

hinzugefügt wurden

Konstanter Gleitkommawert zum Zeichnen eines vollständigen Kreises (FULL_CIRCLE)

hinzugefügt

Multiplizieren Sie _percentComplete mit FULL_CIRCLE, um den Endwinkel für beide Bögen (mit unterschiedlichen Richtungen) zu erhalten.

Berechnung des Radius

%Vor%

Beispiel

%Vor%

CircleGraph bei 75%

    
mjwheat 02.12.2016 21:42
quelle

Tags und Links