PictureBox in der ToolBar



  • Hallöchen,

    ich habe ein Problem mit dem einsetzen einer PictureBox in meine ToolBar. Die ToolBar ist nach linksoben ausgerichtet und dockt an den oberen Bereich des Fensters an. Nun hätte ich es gerne so, dass als erstes ein Bild(Logo) in der ToolBar zu sehen ist und anschließend die Buttons kommen. Wenn ich zur Entwurfszeit einfach die PictureBox im Designmodus(Sharp Develop 2.0) in die ToolBar ziehe, ist sie nachdem ich das Programm ausführen lasse vollständig von den Buttons überdeckt. Wie kann ich es einrichten das erst das Bild bzw. die PicturBox und anschließend die Buttons angezeigt werden? Also die Buttons sollen rechts neben dem Bild erscheinen.

    Ich hoffe das war jetzt nicht zu unverständlich ausgedrückt. 🙂

    Ciao.....



  • ButtonXYZ.Location =  new Point(PictureBox.Width + Button.Location.X, Button.Location.Y);
    

    Wenn das ein Control ist was Du selbst entwickelt hast packst Du obiges bzw.
    überschreibst Du die Methode SizeChanged-DerPictureBox in diesem Control und packst obiges dort rein. kannst auf X noch nen bisschen was draufrechnen dann sind die Buttons nicht direkt eng an der PictureBox

    Alles klar, dann verschieben sich auch die Button und überdecken nichtmehr das Bild in der PictureBox!



  • Muesste auch klappen wenn Du die Methode BackgoundImageChanged der PictureBox nimmst!

    dort schreibst Du ähnliches rein:

    ButtonXYZ.Location = new Point(pictureBoxXYZ.Image.Width, ButtonXYZ.Location.Y);
    

    Sollte beides dafür nützlich sein, das Du diesen Effekt bekommst!



  • Vielen Dank erstmal für die Antworten!!!
    Ich werde es heute Abend gleich mal ausprobieren und freue mich schon auf den Erfolg. 😃
    Ciao......



  • Hmmm, macht ihr bzw. Du das denn mit nem Button oder ToolBarButton Objekt?
    Denn mein ToolBarButton besitzt keine LOCATION Eigenschaft. ^^ Macht ihr das vielleicht mit "normalen" Buttons in der ToolBar?



  • also jedes Objekt was zum designen eines GUI da ist hat die Eigenschaft Location. Weil alles muss ja irgendwo einen Punkt haben wo es auf dem GUI platziert wird.

    mfg sclearscreen

    Ich bin jetzt davon ausgegangen das Du ein Control entwickelt hast:

    -1. im/auf dem Control hast Du ne PictureBox
    -2. desweiteren sind noch besagte Buttons auf dem Control

    Bei deiner Problemstellung bin ich weiter davon ausgegangen das Dein Control
    mit der PictureBox so umgehen kann, das es Bilder während der Entwicklungszeit und der Laufzeit Bilder dynamisch laden kann .

    Da die geladen Bilder verschiedene Grössen haben passt diese PictureBox an aber alle anderen Element wie deine Button behalten aber eine Statische Position bei.

    Und so hatte ich Dein Problem verstanden! Und darauf gruenden sich auch die beiden Lösungvorschläge.



  • Aber ich muss zugeben zum Control entwickeln habe ich bisher noch keine ToolBarButton genutzt.

    Kann gut möglich sein das diese Klasse eher eine Art und Weise hat in Ihrem Auftreten wie ein simpeler Menüeintrag in einem Menü das würde erklären warum
    es keine Location-Eigenschaft gibt.

    Dann wäre es vielleicht doch für Dich sinnvoller an deren Stelle normale Buttons zu benutzen! Weil die haben diese Eigenschaft auf jeden Fall.



  • damit das Bild nathuerlich nicht zu sehr die Ausdehnung also den Platzbedarf
    den Dein Control braucht sprengt. Könnte man auch noch eine Art Schrumpffunktion einbauen hmm habe in nem Projekt auch sowas gebraucht
    hier der Code:

    #region "Diese Methoden sind unmittelbar für das Schrumpfen der Bilder da"
    		// Make a shrinked Image from other Image
    		private Image Shrink(Image ToShrinkedImage, int ShrinkFactor)
    		{
    			if(ShrinkFactor < 0) // negativer Schrumpffaktor muss nochmal mit -1 multipliziert werden
    				ShrinkFactor = ShrinkFactor * -1;
    
    			if(ShrinkFactor == 0 || ShrinkFactor > 100) // Schrumpfaktor Originalgroesse
    				ShrinkFactor = 100;
    
    			int newWidth     = ToShrinkedImage.Width * ShrinkFactor / 100;
    			int newHeight    = ToShrinkedImage.Height * ShrinkFactor / 100;
    			ToShrinkedImage = (ToShrinkedImage as Bitmap).GetThumbnailImage(newWidth,
    				newHeight,
    				new Image.GetThumbnailImageAbort(ThumbnailCallback),
    				System.IntPtr.Zero) as Image;
    
    			return ToShrinkedImage;
    		}
    
    		private bool ThumbnailCallback()
    		{
    			return false;
    		}
    		#endregion
    

    Den wenn Du nem Kollegen die selbst entwickelte Toolbar gibst würde es nerven
    wenn die riesig werden würde nur weil die PictureBox nen Bild mit den
    Ausmassen 1600x1280 hätte oder laden würde. Ist aber nur meine persöhnliche Meinung.

    🙂

    P.S.: Ich hoffe ich habe Deine Problemstellung richtig verstanden!
    Ansonsten weiss nicht welche Stufe der Belanglosigkeit meine Ausführungen erreichen
    um Dir zu helfen. 🙂

    Aber naja um jemand etwas mehr Muse zu schenken reichts vielleicht 😉



  • an welcher Stelle die ToolBarButton gezeichnet werden darum kuemmert sich die
    ToolBar eben selbst! Wie gesagt die haben nur die Aufgabe eines simplen
    Menüs und treten aber in Ihrer Grafischen-Ausdrucksweise anders auf.

    Sicherlich könnte man eine groben Code-Hack machen mit dem nutzen von
    WinAPI-Aufrufen indem man sich das HANDLE oder jedes einzeln holt
    von den ToolBarButton und man verschiebt die dann darueber irgenwie.

    Aber dann musst Du Code bauen der das ganze Layout-Verhalten der ToolBar managed.

    Nen eigenes Control auf dessen Bereich (Clientbereich) ein PicturBox sitzt
    und die Button die sich entsprechend der geladene Bilder in der PictureBox verschieben wäre da all enthalben besser möcht man meinen.

    🙂



  • Hiho,

    vielen Dank für deine Bemühungen. Da die .NET Programmierung für mich noch Neuland ist habe ich so meine Anfänger Probleme. 🙂

    Also ich würde meine ToolBar nun gerne als CustomControl erstellen und habe nun auch schon durch #Develop so eine Datei erstellt. Nun frage ich mich wie ich auf diese Steuereinheit (also meine ToolBar) zugreifen kann. Falls sich einer mit dem #Develop-Editor auskennt, dann sagt mir bitte ob es möglich ist das von mir erstellte Steuerelement im FormDesigner benutzen zu können. Also so als wäre es ganz normal unter "WindowsForms" verfügbar. Muss ich es dafür erst irgendwo "anmelden" und anschließend im "Design" Modus unter Custom Controls suchen?

    Tschö


Anmelden zum Antworten