panel zoomen

dsfad

Mitglied
ich habe ein Panel auf meinem Form :) (Wahnsin ich weiß)
in diesem Panel sind viele andere Controls (das war die Vorgeschichte)

nun zum Problem:
Ich möchte das Panel mit einer zoom-Funktion ausstatten (das schaffe ich auch) aber man soll den gleichen Abschnitt sehen (nur vergrößert halt)...
aber bei mir springt er immer wieder auf die 0:0 Kordinaten...

so sieht bisher mein zoomen aus:
Code:
panel1.Scale(Zoomfaktor);
panel1.Size = new Size(400,400);
panel1.Location = new System.Drawing.Point(40, 128);
 
Hi!
Soweit ich weiß ist die Scale Methode nur dazu gedacht ein Resize einer Form zu behandeln, sodass die Controls auf die aktuelle Formgröße resized werden. Den View des Controls kannst Du so nicht scrollen.
Was aber gehen würde ist, das Du beim Resize Event des Panels, Deine Controls neu plazierst und mittels Scrollbars den Ausschnitt des Panels definierst, der dargestellt werden soll. Ist aber ein ziemlicher Aufwand.
Was anderes habe ich leider auch nicht (gefunden) :(
Ciao
LieberNet
 
danke..
also das mit dem Zoomen mit scale funktioniert schon!
weil alles wird um einen bestimmten Faktor vergrößert und die Positionen bleiben gleich!
mit autoscroll werden auch die Scrollbalken angezeigt!

Jedoch sieht man immer zuerst den Ausschnitt mit den 0:0 Koordinaten!

Hast du ein Beispiel wie man die Scrollbalken Position festlegen kann?!
und wird dabei auch der Ausschnitt verändert oder wirklich nur die Scrollbalken?
 
Hi!
Auf die schnelle kannst Du mal probieren, ob
Code:
                panel1.ScrollControlIntoView(button1);
Dein gewünschtes Verhalten bringt.
Ansonsten gibts beim Panel noch properties wie AutoScrollPosition. Ganz dahinter bin ich auch noch nicht gekommen wie das :confused: funktioniert. Aber vielleicht bringt Dich dieses Property etwas weiter.
Habe mal testhalber einen Button (button1) im panel ganz rechts unten plaziert. Wenn Du folgenden Code verwendest scrolled Dein Panel im nach ganz rechts unten beim Zoomen.
Code:
                Point p = panel1.AutoScrollPosition;
                p.X = button1.Location.X *2;
                p.Y = button1.Location.Y * 2;
                panel1.AutoScrollPosition = p;

Ich hoffe das hilft Dir weiter!
Ciao
LieberNet
 
Super!
das SrollIntoView funz zwar nicht, aber dafür das mit der Autosrollposition!

Jedoch nur einmal! Also wenn ich mehrmals hintereinander zoomen möchte kommt wieder der alte Fehler (keine Fehlermeldung, sondern dass er wieder nicht richtig positioniert)!

Hat da jemand ne Idee?
Meine wäre: Die aktuelle Position zu speichern und dann später wieder mit der gewünschten zu addieren! Aber das klappt auch nicht :mad:
Dazu hätte ich noch eine weitere Frage: worauf bezieht sich die Autosrollposition? Auf die ursprüngliche oder die aktuelle?!
 

Neue Beiträge

Zurück