2016-05-23 12 views
1

Ich habe ein Panel und ich muss ein horizontales Diagramm darauf zeichnen. Aber manchmal kann das Diagramm für das Panel zu lang sein, sogar das Formular hat maximale Größe. Daher möchte ich eine horizontale Leiste im Bedienfeld erstellen, damit der Benutzer den verbleibenden Teil der Zeichnung sehen kann, der außerhalb der Grenzen liegt.Wie erstellt man einen horizontalen Balken in einem Panel-Steuerelement, wenn man darauf zeichnet?

Diagramm ist so etwas wie dieses:

enter image description here

Wie Sie sehen können, das Diagramm aus der Tafel der Grenzen und Form des zu ist. Ich habe keine Ahnung, wie es gemacht werden kann, also habe ich keinen Code zu zeigen. Wie kann ich das mit einer einfachen Methode machen?

Antwort

1

Ja, die Lösung ist ziemlich einfach, solange die Größe, die Sie zeichnen möchten nicht über 32k Pixel Breite gehen:

  • Setzen Sie Ihre Panel innerhalb einer anderen.
  • Die äußerePanel hat AutoScroll=true
  • Die innere ein, wo Sie hat die Größe Ihrer Zeichnung ziehen.
  • Sie müssen in der Paint Veranstaltung, wie Sie sollten auf jeden Fall (!)

Nun ist die äußere Panel zeigt einen horizontalen Scrollbar und der Benutzer alle Teile der Zeichnung nach rechts und links ziehen, blättern und sehen ..

eine Alternative wäre ein Dummy-Steuerelement hinzuzufügen, das die AutoScroll Ihre Zeichnung erzwingt Panel zu arbeiten, aber ich finde, mit zwei Panels dem Reiniger Weg zu gehen ..

Hinweis: Sie kann entweder einverwenden solltenoder zumindest eine doppelt gepufferte Panel Unterklasse Flimmern und Reißen zu vermeiden:

class DrawPanel : Panel 
{ 
    public DrawPanel() 
    { DoubleBuffered = true; } 
} 
+1

Es funktionierte perfekt. Danke @TaW. Zusätzlich löste ich Doppelpufferproblem von http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-for-form –

+0

Froh, zu helfen. Schönes Diagramm übrigens ..! – TaW

Verwandte Themen