Laden...

Scrollbars mit SDL.SurfaceControl

Erstellt von SGT_BOB vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.093 Views
S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 16 Jahren
Scrollbars mit SDL.SurfaceControl

Hallo Leute.

Hab mal wieder ein Problem. 😉

Und zwar habe ich ein SurfaceControl (SDL.Net) auf einem Panel abgelegt und würde gerne, wenn ich die SurfaceControl vergrößere, Scrollbalken angezeigt bekommen.

Die Eigenschaften des Panel:

AutoScroll: true
AutoScrollMinSize: 50,50
AutoSize: false
Dock: None

Die Eigenschaften des SurfaceControl:

Dock: None
SizeMode: AutoSize

Wenn ich jetzt während der Laufzeit ein Bild blitte welches größer ist als das SurfaceControl, wird dieses angepaßt und wird meistens größer als das Panel auf dem es sich befindet. Leider werden die Scrollbalken nicht angezeigt.

Hier mal etwas Code:


...
this.scMap.Size = new Size(800, 800);
			this.sfcMapArea = new SDL.Graphics.Surface(new Size(800, 800)); // SurfaceControl
			this.scMap.Refresh();
			this.sfcMapArea.Fill(Color.White);
			this.panelMap.AutoScroll = true; // darauf sitzt das SurfaceControl
			this.panelMap.ResumeLayout();
			this.ResumeLayout();
			
                                                // die richtigen Größen werden auch ausgegeben
			Console.WriteLine("scMap.Size: " + scMap.Size);
			Console.WriteLine("panelMap.Size: " + panelMap.Size);
...

Das selbe "Spiel" habe ich einmal auf eine PictureBox umgestellt und dort funktioniert es komischerweise. Wundert mich halt, da laut SdlDotNet-Dokumentation das SurfaceControl von PictureBox abgeleitet ist. Außerdem sollte es doch egal sein welches Element auf dem Panel liegt oder nicht?

Weiß nicht weiter... Habe bereits "gegoogelt" und auch hier im Forum alles ausprobiert, aber leider ohne Erfolg.

Mfg

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************

S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 16 Jahren

Hallo nochmal.

Ich habe jetzt (erstmal) eine (vorübergehende) Lösung.

Ich platziere mein SurfaceControl auf einem Panel, welches bei Änderung von SurfaceControl.Size dessen Größe annimmt. Dieses platziere ich auf einem weiteren Panel, welches "Autoscroll=true" eingestellt ist.
Hört sich ein wenig verschachtelt an, funktioniert aber. 😁

Ich verstehe allerdings nicht warum das mit dem Autoscroll mit einem anderen Control (hier Panel) funzt und nicht direkt mit dem SurfaceControl, welches ja auch ein Control ist. ?(

Vielleicht hat dafür ja auch jemand eine Erklärung oder eine bessere Lösung als meine.

Ciao

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************