Seite 1 von 1

ToolSrip anpassen

Verfasst: Sa Feb 21, 2015 3:40 am
von Zenerid
Ich würde gerne bei einem toolStripDropDownButton den Rand an ein Bild anpassen, da dieser Rand beim aktivieren des DropDownMenüs ja leider ein wenig überschwappt und das ganze somit irgendwie komisch aussieht. Kann man irgenwie diesen blauen Rand an die Größe des Bildes anpassen?

Ich habe bei einem toolStripButton mithilfe eines eigenen Renders diesen blauen Rand und zwar so:

Code: Alles auswählen

public MyForm()
{
    InitializeComponent();
    toolStrip1.Renderer = new CustomRenderer();
}

private class CustomRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
    {

    }
}
Jetzt habe ich ja auch beim überschreiben einfach nichts stehen, ist das so eine gute Möglichkeit? Irgendwie kommt mir das ein wenig unsauber vor. Sollte man die Klasse dann auch evtl. auslagern? Man kann das ja leider nicht einfach so machen oder gibt es da eine Möglichkeit?

Code: Alles auswählen

protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{

}
Zudem würde ich gerne die Schriftgröße eines toolStripDropDownButton ändern. Das geht ja auch wohl aber gibt es eine Möglichkeit, nur die Schriftgröße des toolStripDropDownButtons zu ändern ohne dabei die Schriftgröße der DropDownItems zu ändern? Ich habe die Option "DisplayStyle" ImageAndText aktiviert. Ich will also nur diesen ImageText vergrößern, ohne dabei diese DropDownItems zu vergrößern (die Schriftgröße).

Falls das nicht gehen sollte: Wie könnte man das ganze dann realisieren?

Re: ToolSrip anpassen

Verfasst: Sa Feb 21, 2015 9:44 am
von cloidnerux
Ich würde gerne bei einem toolStripDropDownButton den Rand an ein Bild anpassen, da dieser Rand beim aktivieren des DropDownMenüs ja leider ein wenig überschwappt und das ganze somit irgendwie komisch aussieht. Kann man irgenwie diesen blauen Rand an die Größe des Bildes anpassen?
Du kannst eine Klasse von toolStripDropDownButton ableiten und dann die OnPaint überladen. Damit hast du dann die volle Kontrolle darüber was passiert.
Evt reicht es beim Klicken auf das Element den Bereich einzuschränken in dem gezeichnet werden soll.
Ansonsten musst du selber Hand anlegen.

Re: ToolSrip anpassen

Verfasst: So Feb 22, 2015 6:10 am
von Zenerid
Hmm ... ich habe das ganze jetzt erst einmal so gemacht aber ich komme nicht weiter.

Code: Alles auswählen

protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e)
{
    if (e.Item.Pressed)
    {
        Rectangle bounds = new Rectangle(Point.Empty, e.Item.Image.Size);
        e.Graphics.FillRectangle(Brushes.Green, bounds);
    }
}
Wie kann ich den Punkt bestimmen, an dem angefangen werden soll zu zeichnen? (Aktuell hängt dieses grüne Rechteck ein wenig in der Luft)
Zudem ist mein Bild, das ich verwende (um das gezeichnet werden soll) ein abgerundetes Rechteck, kann man das auch irgendwie so zeichnen? Wenn ich das ganze jetzt auch mit e.Item.Image.Size habe ich das Problem, dass die Items unten in der Luft hängen und nicht wie gewollt da dran.

Wie sieht es denn eigentlich mit der Schriftgröße aus? Kann man das mit dem ImageText und dem DropDownMenu text irgendwie seperieren?

Re: ToolSrip anpassen

Verfasst: Mo Feb 23, 2015 2:39 pm
von cloidnerux
Wie kann ich den Punkt bestimmen, an dem angefangen werden soll zu zeichnen? (Aktuell hängt dieses grüne Rechteck ein wenig in der Luft)
Ich denke mal, dass du den Punkt mit in die Instantierung deines Rectangles einbaust.
Schließlich zeichnest du ja in den Rahmen(Canvas) der in dem Graphics Objekt aus "e" bereit gestellt wird.
Zudem ist mein Bild, das ich verwende (um das gezeichnet werden soll) ein abgerundetes Rechteck, kann man das auch irgendwie so zeichnen?
Mit Sicherheit.
Wie sieht es denn eigentlich mit der Schriftgröße aus? Kann man das mit dem ImageText und dem DropDownMenu text irgendwie seperieren?
Wenn du es selber zeichnest: Definitiv.
Ansonsten: keine Ahnung.