Hälfte eines Kreises Berechenen.

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Keybladmaster.

    Hälfte eines Kreises Berechenen.

    Hey, Hey

    Ich Versuche gerade die Hälfte eines mit Hilfe von GDI gezeichneten Kreises zu Berechnen.
    Hier erst einmal mein Code zum Zeichnen.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim g As Graphics = Me.CreateGraphics()
    3. With g
    4. .SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    5. .TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
    6. .PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
    7. .InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
    8. .CompositingQuality = Drawing2D.CompositingQuality.HighQuality
    9. .DrawEllipse(Pens.Black, 50, 50, 250, 250)
    10. End With
    11. End Sub


    So der wird auch Schön Gezeichnet aber Wie kann ich genau die Mitte ausrechnen?
    Ich möchte nämlich gerne ein Kreisdiagramm machen.

    Dazu Brauch ich aber genau die Mitte um dort eben mein Ersten Strich zu machen.
    Leider habe ich gerade keine Ahnung wie das gehen soll?!!

    Weil, ich möchte dann mit Hilfe von .DrawLine() meine Linie Zeichnen.

    LG
    Hallo,
    egal wie die Berechnung ausfällt, und welche Tipps du bekommst.
    ABER....
    Ich würde deinen Kreis nicht im Button-Klick-Event zeichnen, sondern im "Paint-Event". (Das "graphics" bekommst du da gleich mitgeliefert).
    Das Problem... wenn du deine Form außerhalb des Sichtbereiches verschiebst, oder es aus anderen Gründen neu gezeichnet werden muss ist er nicht mehr vorhanden.

    Edit...
    .... und da ich gerade mal dabei bin. nimm nicht Elipse... sondern PIE .. da kannst du recht gut alles angeben.

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. e.Graphics.FillPie(Brushes.Silver, 100, 100, 100, 100, 0, 180)
    3. End Sub
    Ja, ich weiß.
    Mein Code ist auch nur zu Test Zwecken im Button-Klick Event.
    Sobald alles Funktioniert wird alles in das Paint Event Verschoben, da man wie du schon sagtest das Graphic's Objekt aus dem e(PaintEventArgs) bekommt.

    EDIT:

    Gut, ich habe das ganze trotzdem in's Paint Event gemacht damit es keine Beschwerden gibt^^
    Habe das Ganze nun so gemacht :

    VB.NET-Quellcode

    1. With e.Graphics
    2. .Clear(Me.BackColor)
    3. .SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    4. .TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
    5. .PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
    6. .InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
    7. .CompositingQuality = Drawing2D.CompositingQuality.HighQuality
    8. .DrawPie(Pens.Black, 50, 50, 100, 100, 0, 360)
    9. End With


    Habe auch meinen (ersten)Strich, aber wie bekomme ich nun da die Mitte heraus das ich weiter Zeichnen kann?

    LG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Keybladmaster“ ()

    hmm. weiterzeichnen?
    zum einen... die Mitte = Durchmesser /2
    zum anderen.. du kannst doch deine Stücke nahtlos aneinanderzeichnen.
    die beiden letzten Werte = StartWinkel... und "Zeichenwinkel" (ich nennn den mal einfach so..)

    0= rechts bei 3 Uhr :)



    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    3. e.Graphics.FillPie(Brushes.Silver, 100, 100, 100, 100, 0, 90)
    4. e.Graphics.FillPie(Brushes.Orange, 100, 100, 100, 100, 90, 90)
    5. e.Graphics.FillPie(Brushes.SteelBlue, 100, 100, 100, 100, 180, 30)
    6. End Sub