[C#] Form zoomen/scrollen - how to?

Zacha

Grünschnabel
Hallo,

ich hab eine Form in der ich einige geometrische Formen und Text zeichne entsprechend Daten aus einer Datei. Dafür müsste ich möglichst das Form zoomen können und scrollen. Beim zoomen sollte der Text nicht mitvergrößert/verkleinert werden, jedoch seine Position entsprechend den geometrischen Formen verändern.

Hat da vielleicht jemand ein paar Tipps wie dies am Besten zu bewerkstelligen ist? Meine bisherige Suche ergab keine befriedigende Hilfe, vermutlich suche ich nach dem Falschen. Alles von Hand per EventHandler zu programmieren könnte recht aufwendig sein und ich denke, mein Problem ist so grundlegend dass es da doch bestimmt vorgefertigte Funktionen oder ähnliches gibt.
 

Zacha

Grünschnabel
Aus den nicht kommenden Antworten schließe ich, dass es da keine einfachen standardmethoden gibt. Habe mir mittlerweile selbst beholfen, zumindest schon mal was das scrollen angeht. Trotzdem danke!
 

timestamp

Mitglied Käsekuchen
Aus den nicht kommenden Antworten schließe ich, dass es da keine einfachen standardmethoden gibt. Habe mir mittlerweile selbst beholfen, zumindest schon mal was das scrollen angeht. Trotzdem danke!

Dann sei doch bitte so nett und poste deine Lösung für die, die auch so ein Problem haben (werden) :)
 

Zacha

Grünschnabel
Es ist keine unbedingt saubere oder allgemein verwendbare Lösung, aber ok. Ich habe im Prinzip zwei Forms, ein "Kotrollform" und ein Form in dem eine grafik entsprechend den Angaben im Kontrollform angezeigt wird. Es ging jetzt umd das Scrollen dieses Grafikforms, falls die Grafik halt zu groß ist. Dafür habe ich dann im Kontrollfoem eine trackBarScroll eingefügt. Jetzt lasse ich, jedes mal wenn der Positionszeiger auf der trackBarScroll verändert wird, die Grafik neu zeichnen, wobei ich die X-Koordinate um trackBarScroll.Value verändere.

Es ist also eigentlich kein "echtes" scrollen sondern ein Neuzeichnen mit lediglich veränderten Koordinaten. E sist kein sonderlich sauberer Code, daher verzichte ich mal auf ein posten hier.

Zoomen werde ich vermutlich ähnlich machen, über so eine trackBarScroll, deren Wert dann die Höhen und Breiten verändert für das neu zu zeichnende.
 

Spyke

Premium-User
Zum scrollen.
Zeichne in einem Panel und den Containier in dem sich das Panel befindet (hier wahscheinlich Form, oder anderes ScrollableControl), setzt du auf Autoscroll true.
Dann erscheinen automatisch scrollbars wenn die größe des Panels über den sichtbaren bereich hinaus geht.

Beim Zoomen gebe es jetzt glaube eine Transform Methode im Graphics Objekt, weiß aber jetzt nicht ob die für dich direkt passen würde.
 

napstermania

Mitglied
Hallo,

ich weiß nicht ob ich grad richtig liege, aber du hättest evtl. die möglickeit deine Grafischen Formen in eine Bitmap zu zeichnen, welche du dann einfach in eine PictureBox(ein anderes Control geht mit sicherheit auch) legen könntest. Wenn die Bitzmap größer als das Control wird bekommst du, wie Skype schon sagte deine Scrollbars automatisch. Das zoomen kannst du einfach du vergößern bzw. verkleinern der Bitmap realisieren. (Weiß jetzt nicht ob das über eine Transform auch geht :)

Dann hättest du nur das Problem der Texte, welche du dynamisch über der Bitmap zeichnen und die Positionen anhand der Scrollbar-Values und dem Zoomfaktor berechnen müsstest.

Ist jetzt nur mal so ein gedankengang ;)

Gruß
 

Zacha

Grünschnabel
Danke für die Antworten,an das Bitmap hat ich auch schon gedacht glaube aber nicht das es mit den Texten so hinzukriegen ist, das mit WPF werde ich mir mal ansehen!