none
GDI-Zeichenbereich erweitern RRS feed

  • Frage

  • Hallo,

    ich bin gerade dabei, per GDI eine einfache Visualisierung von Positionen zu realisieren.

    Allerdings ist der Zeichenbereich anscheinend stark eingeschränkt, denn bei X-Werten über 200 Pixeln wird nichts mehr angezeigt. Hier ein Beispiel:

    Dim z As Graphics = CreateGraphics()
    Dim stift As New Pen(Color.Black, 1)
    Dim offset_x As Integer = 15
    Dim laenge As Integer = 552
    
    z.DrawLine(stift, offset_x + 10, 50, offset_x + 10, 20)
    z.DrawLine(stift, offset_x + 75, 50, offset_x + 75, 20)
    z.DrawLine(stift, offset_x + 145, 50, offset_x + 145, 20)
    z.DrawLine(stift, offset_x + 155, 50, offset_x + 155, 20)
    z.DrawLine(stift, offset_x + 225, 50, offset_x + 225, 20)
    z.DrawLine(stift, offset_x + 295, 50, offset_x + 295, 20)
    z.DrawLine(stift, offset_x + 305, 50, offset_x + 305, 20)
    z.DrawLine(stift, offset_x + 375, 50, offset_x + 375, 20)
    z.DrawLine(stift, offset_x + 445, 50, offset_x + 445, 20)
    z.DrawLine(stift, offset_x + 454, 50, offset_x + 454, 20)
    z.DrawLine(stift, offset_x + 542, 50, offset_x + 542, 20)
    
    

    Bei obigen Code werden nur die ersten 5 Linien angezeigt.

    Wie kann ich den Bereich erweitern, damit alle Linien angezeigt werden?

    Gruß, Schüssel

    Dienstag, 18. Juni 2013 08:35

Antworten

  • Hallo, der Zeichenbereich ist so groß wie die die Client-Fläche der Form. Die ist im Normalfall die graue Fläche im Rahmen. Dein Code zeichnet bei mir auch  alle Linien ordentlich auf die Form drauf. Eventuell geht es nicht, weil ein Container, wie beispielsweise ein Panel, die Sichgt versperrt. Die Standartbreite der Form von 300*300 Pixel ist für deine Zeichnung sowieso zu klein, weswegen man diese erst größer ziehen muss um alles zu sehen.

    PS: Poste mal einen Screenshot, wie es bei dir aussieht.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.


    Dienstag, 18. Juni 2013 09:38
    Moderator

Alle Antworten

  • Hallo, der Zeichenbereich ist so groß wie die die Client-Fläche der Form. Die ist im Normalfall die graue Fläche im Rahmen. Dein Code zeichnet bei mir auch  alle Linien ordentlich auf die Form drauf. Eventuell geht es nicht, weil ein Container, wie beispielsweise ein Panel, die Sichgt versperrt. Die Standartbreite der Form von 300*300 Pixel ist für deine Zeichnung sowieso zu klein, weswegen man diese erst größer ziehen muss um alles zu sehen.

    PS: Poste mal einen Screenshot, wie es bei dir aussieht.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.


    Dienstag, 18. Juni 2013 09:38
    Moderator
  • Vielen Dank für die Mühe und die hilfreiche Antwort!

    Ich habe meinen Code nochmals in ein neues Projekt kopiert und die Maße der Form im Eigenschaften-Fenster auf 300*1000 Pixel angepasst. Danach wurden alle Linien dargestellt. Kann es sein, dass die Form nicht "richtig" vergrößert wurde, da ich sie nur mit dem Mauszeiger größer gezogen hatte? Platz war genug da, auch keine verdeckenden Flächen, nur warm nach ca. 250 Pixeln in der Breite Schluss... sehr seltsam.


    Dienstag, 18. Juni 2013 10:09
  • Wenn du die Linien zeichnest und danach erst die Form vergrößerst, dann werden die restlichen Linien nicht neu gezeichnet (genauso können die Linien einfach verschwinden). Um das zu verhindern, musst du deinen Code erneut ausführen. Wenn du willst,. das deine Zeichnung beim Verändern der Größe usw. aufgerufen wird, dann solltest du den Code in den Paint-Eventhandler verlegen. Dieser wird dann automatisch (oder durch aufruf von Invalidate()) ausgeführt.

    <Code:13/> - Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    Dienstag, 18. Juni 2013 10:41
    Moderator
  • Sorry, habe mich wohl etwas missverständlich ausgedrückt: ich habe das Fenster im Forms-Designer vor dem Buildvorgang größer gezogen - zur Zeit der Ausführung hatte es eine ausreichende Größe. Mit dem Paint-Event muss ich nicht arbeiten, da das Fenster eine feste Größe erhalten soll.
    Dienstag, 18. Juni 2013 11:09