Hey,
Ik ben een set controls aan het maken (in VB.NET) die kwa uiterlijk lijken op de Visual Studio 2010 IDE. Op het moment ben ik aan de TabControl bezig (die voor de tabbed documents gebruikt wordt natuurlijk) en vooral de achtergrond achter de tabs.
Deze achtergrond is een donkerblauwe kleur, met een patroon van puntjes. Hier is een uitvergootte versie (met verhoogd contrast/helderheid voor de duidelijkheid):

Zoals je kunt zien zijn er twee patronen: een van donkere puntjes en een van lichte puntjes.
Het tekenen van een sets puntjes is niet zo moeilijk, dat kan met behulp van de HatchBrush met een HatchStyle van Percent20:
Het probleem is nu het tekenen van de tweede set puntjes. Ik dacht, ik doe gewoon precies hetzelfde nog een keer (met een andere punt kleur en doorzichtige achtergrond natuurlijk), nadat ik het Graphics object met 1 pixel omhoog verschoven heb:
Maar helaasch: dit werkt niet. Wat ik ook doe met het graphics object (roteren, transleren, uitrekken, etc), het patroon blijft altijd op dezelfde positie getekend. Het lijkt erop dat het hatch patroon zich niets aantrekt van de orientatie van het graphics object....
Kan ik op een of andere manier toch dit tweede patroon (zelfde patroon natuurlijk maar met een andere kleur) omhoog verschuiven? Of kan ik misschien mijn eigen patroon maken? De enige andere manier die ik zie is handmatig alle puntjes zetten mbv een dubbele loop, maar dat wordt wel heel lelijk en hoogstwaarschijnlijk enorm langzaam, dat zie ik echt niet zitten!
En voordat iemand WPF gaat aanraden: ik ga geen WPF gebruiken, ik heb deze set controls gemaakt voor winforms omdat ik dat uitsluitend gebruik. Ik weet dat dit in WPF waarschijnlijk 2 seconden werk was geweest, maar dat is nou eenmaal niet mogelijk.
Ik ben een set controls aan het maken (in VB.NET) die kwa uiterlijk lijken op de Visual Studio 2010 IDE. Op het moment ben ik aan de TabControl bezig (die voor de tabbed documents gebruikt wordt natuurlijk) en vooral de achtergrond achter de tabs.
Deze achtergrond is een donkerblauwe kleur, met een patroon van puntjes. Hier is een uitvergootte versie (met verhoogd contrast/helderheid voor de duidelijkheid):

Zoals je kunt zien zijn er twee patronen: een van donkere puntjes en een van lichte puntjes.
Het tekenen van een sets puntjes is niet zo moeilijk, dat kan met behulp van de HatchBrush met een HatchStyle van Percent20:
Visual Basic .NET:
1
2
3
| Using b As New HatchBrush(HatchStyles.Percent20, punt1Color, backColor) e.Graphics.FillRectangle(b, rect) End Using |
Het probleem is nu het tekenen van de tweede set puntjes. Ik dacht, ik doe gewoon precies hetzelfde nog een keer (met een andere punt kleur en doorzichtige achtergrond natuurlijk), nadat ik het Graphics object met 1 pixel omhoog verschoven heb:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
| Using b As New HatchBrush(HatchStyles.Percent20, punt1Color, backColor) e.Graphics.FillRectangle(b, rect) End Using Using b As New HatchBrush(HatchStyles.Percent20, punt2Color, Color.Transparent) e.Graphics.TranslateTransform(0, -1) e.Graphics.FillRectangle(b, rect) e.Graphics.ResetTransform() End Using |
Maar helaasch: dit werkt niet. Wat ik ook doe met het graphics object (roteren, transleren, uitrekken, etc), het patroon blijft altijd op dezelfde positie getekend. Het lijkt erop dat het hatch patroon zich niets aantrekt van de orientatie van het graphics object....
Kan ik op een of andere manier toch dit tweede patroon (zelfde patroon natuurlijk maar met een andere kleur) omhoog verschuiven? Of kan ik misschien mijn eigen patroon maken? De enige andere manier die ik zie is handmatig alle puntjes zetten mbv een dubbele loop, maar dat wordt wel heel lelijk en hoogstwaarschijnlijk enorm langzaam, dat zie ik echt niet zitten!
En voordat iemand WPF gaat aanraden: ik ga geen WPF gebruiken, ik heb deze set controls gemaakt voor winforms omdat ik dat uitsluitend gebruik. Ik weet dat dit in WPF waarschijnlijk 2 seconden werk was geweest, maar dat is nou eenmaal niet mogelijk.