WinFuture-Forum.de: Kreativ Lösung gesucht. (VB.Net 2010) - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Kreativ Lösung gesucht. (VB.Net 2010) gdi+ Loop mit zwei Ellipsen


#1 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 31
  • Beigetreten: 22. Januar 14
  • Reputation: 0

geschrieben 13. September 2018 - 18:34

Guten Abend.

Ich schrieb einen durchgehenden Loop mit VB.Net 2010. Es ist eine Forms Anwendung. Die Graphics Oberfläche zeigt einen Kreis der sich von links nach rechts bewegt. Auf der rechten Seite verlässt der Kreis den Rand um im selben Augenblich auf der linken Seite zu erscheinen.

Das was sichtbar sein kann erreichte ich in den Codezeilen mit zwei Ellipsen. Ich frage mich ist in der Welt der Programmierungen eine ProgrammiererInn oder ein Programmierer (können auch mehrere sein), die das Ergebnis mit nur einer Ellipse erreichen können.

Der folgende Code kann kopiert und eingefügt werden in einem Form Projekt des Programms VB.Net 2010 oder höher, ohne zusätzliche controls verwenden zu müssen.

Public Class Form1
Dim WithEvents t As New Timer() With {.Interval = 50}
Dim UFO As Integer
Dim reachTheotherSide As Integer
Dim counter As Integer

Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
    reachTheotherSide += 1
    counter += 1

    If reachTheotherSide >= 198 Then
        UFO += 1
    End If

    If reachTheotherSide >= 250 And UFO = 45 Then
        reachTheotherSide = 45
    End If

    If UFO = 45 Then
        UFO = -87
    End If

    If counter = 285 Then
        Threading.Thread.Sleep(1000)
        counter = 0
    End If

    Me.Invalidate()
End Sub

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    DoubleBuffered = True
    CenterToScreen()
    t.Start()
    UFO = -87
    reachTheotherSide = 45
End Sub

Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    e.Graphics.DrawEllipse(New Pen(Color.Black, 0), UFO, 87, 86, 86)
    e.Graphics.DrawEllipse(New Pen(Color.Black, 0), reachTheotherSide, 87, 86, 86)
End Sub
End Class


Mit freundlichen Grüßen

Stefan
0

Anzeige

#2 Mitglied ist online   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.249
  • Beigetreten: 20. Juli 07
  • Reputation: 943

geschrieben 14. September 2018 - 07:00

Unter der Annahme, daß ich das Problem richtig verstanden hab:

- Nein, Du wirst zwei Ellipsen benötigen. Einfach deswegen, weil Du die Ellipse als (atomares) Objekt auf den Bildschirm zeichnest; keine halbe und keine Drittelellipse, sondern immer eine ganze, auch dann, wenn sie vom Rand "überdeckt" (=> abgeschnitten) wird.

- Je nachdem, was genau Dein Anspruch ist, kannst Du ein eigenes Ellipsenobjekt entwerfen und die beiden "Windows-Ellipsen" da drin kapseln, sodaß man sie nicht sieht. Dann kann die ganze Rechenlogik da rein und Du kannst ein eigenes Interface definieren, zB als <myEllipse>.move(vector) und dann würden die erforderlichen Berechnungen im Hintergrund so angestellt werden, daß wenn die Ellipse auf dem definierten Vektor an den Fensterrand anstößt, der Weg nahtlos gemäß dem Ursprungsvektor fortgesetzt wird (so als wäre das eine endlose Ebene).


- Wenn es Dir aber nur darum geht, statt zwei Ellipsen nur eine instantiieren zu müssen, um mit weniger Code auskommen zu können: eher nicht.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 31
  • Beigetreten: 22. Januar 14
  • Reputation: 0

geschrieben 14. September 2018 - 12:34

Ja, es währe einfach mit weniger Code. ("RalphS" Du hast das Thema richtig verstehen können) Und ich könnte versuchen die Geschwindigkeit stätig zu ändern weil ich mich nur auf ein Objekt konzentrieren könnte. (langsam, schnell, schneller und wieder schnell, langsam).

Den zweiten (respektive ersten) Teil ein eigenes Ellipsenobjekt zu entwerfen ist mit meinen Künsten noch nicht in Reichweite.
<myEllipse>.move(vector) ist mit meiner Vorstellungskraft eine sehr interessante Variante, doch mit meinen VB.Net Fähigkeiten unvorstellbar. Wenn möglich schaff ich einen Fortschritt in zwei Jahren (Forenzauber exklusive).

Trotzdem mit freundlichen Grüßen

. . .und p.s.: das Thema wartet auf eine Heldin oder einen Helden (mehrere geht auch)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0