Gehts ordentlicher?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von DoomStyler.

    Gehts ordentlicher?

    Hoi.

    Ich hätte keine idee wie ich es ordentlicher bekommen könnte. Villeicht wisst ihr etwas.

    Code:

    VB.NET-Quellcode

    1. If e.X > startPos.X And e.Y > startPos.Y Then
    2. gr.DrawRectangle(myPen, New Rectangle(startPos.X, startPos.Y, e.X - startPos.X, e.Y - startPos.Y))
    3. boundsRect = New Rectangle(startPos.X, startPos.Y, e.X - startPos.X, e.Y - startPos.Y)
    4. ElseIf e.X < startPos.X And e.Y > startPos.Y Then
    5. gr.DrawRectangle(myPen, New Rectangle(e.X, startPos.Y, startPos.X - e.X, e.Y - startPos.Y))
    6. boundsRect = New Rectangle(e.X, startPos.Y, startPos.X - e.X, e.Y - startPos.Y)
    7. ElseIf e.X > startPos.X And e.Y < startPos.Y Then
    8. gr.DrawRectangle(myPen, New Rectangle(startPos.X, e.Y, e.X - startPos.X, startPos.Y - e.Y))
    9. boundsRect = New Rectangle(startPos.X, e.Y, e.X - startPos.X, startPos.Y - e.Y)
    10. ElseIf e.X < startPos.X And e.Y < startPos.Y Then
    11. gr.DrawRectangle(myPen, New Rectangle(e.X, e.Y, startPos.X - e.X, startPos.Y - e.Y))
    12. boundsRect = New Rectangle(e.X, e.Y, startPos.X - e.X, startPos.Y - e.Y)
    13. End If
    Hi
    x und y separat austauschen wäre vmtl. sinnvoll. Außerdem solltest du kein Graphics-Objekt zwischenspeichern, sondern es über Invalidate lösen. Es wäre aber ggf. eh sinnvoller, du würdest einfach nur den Ursprung in einem Punkt und die Abmessungen in einem Size-Objekt festhalten und im Graphics selber dann den Rest erledigen. Die Size darf ruhig negativ werden, nur solltest du das dann berücksichtigen, sobald du zeichnest. Ansonsten sind übrigens sehr viele redundante Berechnungen drin. Du hättest bspw. gr.DrawRectangle und die Zuweisung von boundsRect vertauschen können, dann hättest du gr.DrawRectangle hinter das If setzen können, wodurch dann gr.DrawRectangle(myPen, boundsRect) draus geworden wäre. Dennoch ist Invalidate die bessere Lösung.

    Gruß
    ~blaze~