Halbkreis mit GDI+

  • Hallo zusammen,

    wie kann ich es realisieren einen Kreis mit GDI+ zu zeichnen, welcher aber um einen bestimmten Winkel geöffnet ist.
    Als Beispiel ein Kreis welcher zu 180° offen ist, besser bekannt als Halbkreis.
    Hoffe da kann mir jemand helfen :)

    Grüße ErrorKid

  • Absolut übersehen.. Kuchen.. natürlich! Danke dir :)

    EDIT: geht es auch ohne die beiden Linien?

  • _GDIPlus_GraphicsDrawArc

  • Danke Andy.. Das ist es.
    Wenn mir jetzt noch jemand erklären kann wieso mein Viertelkreis nicht richtig mit dem ganzen Kreis abschließt dann bin ich zufrieden :D
    Hier mein Quelltext:

    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <_ControllableButtons.au3>

    [/autoit][autoit][/autoit][autoit]

    $GuiHeight = @DesktopHeight
    $GuiWidth = @DesktopWidth
    $MainMenuRadius = 500

    [/autoit][autoit][/autoit][autoit]

    $hGUI = GUICreate("ControllerMenu", $GuiWidth, $GuiHeight, Default, Default, $WS_POPUP, $WS_EX_LAYERED)
    GUISetBkColor(0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)

    [/autoit][autoit][/autoit][autoit]

    DrawMainMenu()
    $player1 = _GDIPlus_PenCreate(0xFF00FF00, 20)
    _GDIPlus_PenSetAlignment($player1, 1)
    _GDIPlus_GraphicsDrawArc($hGraphic, $GuiWidth / 2 - $MainMenuRadius / 2 - 10, $GuiHeight / 2 - $MainMenuRadius / 2 - 10, $MainMenuRadius , $MainMenuRadius , 180, 90, $player1) ;PLAYER 1

    [/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]

    Im Anhang ist noch ein Bild wie es momentan aussieht.

  • Auf dem Bild sieht es so aus, als hätte die Ellipse andere Ausmaße als der Viertelkreis. Aber das kann man schlecht testen ohne deine UDF bzw. die Funktion _DrawMainMenu zu haben. Kontrolliere noch mal alle Koordinaten und Größen bei den Figuren die du zeichnest.

  • Oh na klar, hier dir Funktion:

    [autoit]


    Func DrawMainMenu()
    $MainMenuRadius = 500
    _GDIPlus_GraphicsFillEllipse($hGraphic, $GuiWidth / 2 - $MainMenuRadius / 2, $GuiHeight / 2 - $MainMenuRadius / 2, $MainMenuRadius, $MainMenuRadius)
    EndFunc ;==>DrawMainMenu

    [/autoit]
  • Ich hab jetzt nicht nachgerechnet, aber so sollte es halbwegs korrekt sein. Der Radius des grünen Bogens muss ein bisschen größer sein, verschieben alleine reicht nicht aus. Wenn du ihn auf die selben Koordinaten setzt wie die schwarze Ellipse, dann siehst du dass genau die Mitte des Bogens auf der Kante der Ellipse liegt.
    Das ist ein Geometrieproblem, kein GDI+-Problem ;).