GDI gezeichneten Körper zentrieren?

  • Allgemein

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

    GDI gezeichneten Körper zentrieren?

    Gaudee,

    Wie kann ich ein Körper bzw. Form mit GDI zentriert in einem Panel zeichnen lassen?

    Danke im Voraus !

    Btw so sieht mein Code imo aus(bin ein wenig am testen):

    VB.NET-Quellcode

    1. Dim Mal As New Drawing2D.LinearGradientBrush(New Point(0, 0), New Point(50, 50), Color.Green, Color.YellowGreen) With e.Graphics .FillEllipse(Mal, 50, 50, 50, 50) .DrawEllipse(Pens.Black, 50, 50, 50, 50) End With
    Reche nie Größe der zu zeichnenden Figur aus, und subtrahiere die von der Größe des Panels=>durch 2 teilen. Dann solltest du die Position erhalten, an die du es zeichnen musst, damit es zentriert ist.
    Wie schon FlashTek sagte:

    VB.NET-Quellcode

    1. Dim lv_rect as New Rectangle((Panel.Width / 2) - (50 / 2), (Panel.Height / 2) - (50 / 2), 50, 50)
    2. Dim Mal As New Drawing2D.LinearGradientBrush(lv_rect, Color.Green, Color.YellowGreen, 0)
    3. With e.Graphics
    4. .FillEllipse(Mal, lv_rect)
    5. .DrawEllipse(Pens.Black, lv_rect)
    6. End With
    Hi
    wenn dann schon mit Option Strict On und der Integer-Division:

    VB.NET-Quellcode

    1. Dim parentBounds As Rectangle
    2. Dim objectSize As Size
    3. Dim destination As Rectangle = New Rectangle(parentBounds.X + (parentBounds.Width - objectSize.Width) \ 2, _
    4. parentBounds.Y + (parentBounds.Height - objectSize.Height) \ 2, objectSize.Width, objectSize.Height)

    Da es in der Praxis eh nicht zum Überlauf kommen kann, habe ich einfach mal die \ 2 zusammengefasst.

    Gruß
    ~blaze~