[VB] Zeichnen von Bildern

C-H

Erfahrenes Mitglied
Hi!

Ich bin gerade dabei einen customRenderer für das ToolStrip-Control zu schreiben, so dass es sich unter XP optisch genauso verhält wie unter Vista (z.B. wie die grüne Toolbar im Windows Explorer). Dazu habe ich 3 png Grafiken erstellt, jeweils für Links, Rechts und die Mitte. Mein Problem ist jetzt, dass sie nicht richtig gezeichnet werden. Soll heißen, wenn ich z.B. das linke Bild (4 Pixel breit) an Position X=2, Y=0 zeichne, sieht es so aus wie das (vergrößerte) Bild im Anhang.

Es scheint so zu sein, dass der Ursprung der Textur immer gleich bleibt, auch wenn ich das zu zeichnende Rectangle in der Position verschiebe. Kann ich diesen Ursprung irgendwie beeinflussen? Oder kann ich mein Ziel anders erreichen?

Hier noch mein Code:

Code:
ProtectedOverridesSub OnRenderButtonBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
Dim button As ToolStripButton = e.Item
If button.Selected Then
Dim b As Brush
Dim bi As Image
' Left Image
bi = New System.Drawing.Bitmap(My.Resources.toolstripbutton_overlay_hover_left)
b = New TextureBrush(bi)
e.Graphics.FillRectangle(b, 2, 0, 4, 21)
' Center Image
bi = New System.Drawing.Bitmap(My.Resources.toolstripbutton_overlay_hover_center)
b = New TextureBrush(bi)
e.Graphics.FillRectangle(b, 0, 0, (e.Item.ContentRectangle.Width - 8), 21)
' Right Image
bi = New System.Drawing.Bitmap(My.Resources.toolstripbutton_overlay_hover_right)
b = New TextureBrush(bi)
e.Graphics.FillRectangle(b, 0, 0, 4, 21)
EndIf
If button.Pressed OrElse button.Checked Then
e.Graphics.FillRectangle(New SolidBrush(Color.CornflowerBlue), e.Item.ContentRectangle)
Else
e.Graphics.FillRectangle(New SolidBrush(Color.Transparent), e.Item.ContentRectangle)
EndIf
EndSub
 

Anhänge

  • fehler.png
    fehler.png
    4,4 KB · Aufrufe: 57
Zurück