Blokjes inkleuren

Status
Niet open voor verdere reacties.

basparky

Gebruiker
Lid geworden
11 jan 2012
Berichten
10
Tijdens het tekenen van een heleboel blokjes wil ik de kleur tijdens het tekenen kunnen veranderen..
In onderstaande code worden de blokjes getekend maar vreemd genoeg niet ingekleurd? Wanneer ik in dezelfde code de 'if drawprofile then' weghaal lukt dit wel?

(Voor mijn toepassing wil ik de kleur van de blokje af laten hangen van de waarde van een bit in een array).

Iemand een suggestie?
Alvast bedankt

Code:
    Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint
        If drawProfile Then
            Dim penWhite As New System.Drawing.Pen(System.Drawing.Color.Green)
            Dim blueBrush As New SolidBrush(Color.Black)
            Dim obj As System.Drawing.Graphics
            obj = Me.CreateGraphics()

            Dim rect As System.Drawing.Rectangle() = New Rectangle(210) {}
            Dim j As Integer = 50
            Dim k As Integer
            Dim l As Integer
            l = 50 'x
            For k = 1 To 50
                For i = 1 To 210
                    If i = 100 Then
                        e.Graphics.FillRectangle(blueBrush, rect(i))
                    End If
                    rect(i) = New Rectangle(l, j, 3, 3) '' x,y,width,hieght 
                    j = j + 3

                Next
                obj.DrawRectangles(penWhite, rect)
                j = 50
                l = l + 3
            Next
            obj.Dispose()
        End If
    End Sub
 
Hallo,

Bedoel je zoiets?

(deze code is geconverteerd van C#, het is getest en werkt)
Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim rand As New Random()
        Dim graphics As Graphics = Me.CreateGraphics()

        For x As Integer = 0 To 200 Step 10
            For y As Integer = 0 To 200 Step 10
                Dim brush As New SolidBrush(Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)))
                graphics.FillRectangle(brush, x, y, 10, 10)
            Next
        Next
    End Sub

Ipv rand.Next kun je natuurlijk ook een entry van een array gebruiken. Dit is makkelijk aan te passsen.

Hier heb je ook nog de originele C# code:
Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Random rand = new Random();
            Graphics graphics = this.CreateGraphics();

            for (int x = 0; x <= 200; x += 10)
                for (int y = 0; y <= 200; y += 10)
                {
                    SolidBrush brush = new SolidBrush(Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)));
                    graphics.FillRectangle(brush, x, y, 10, 10);
                }
        }

Ik hoop dat je hier wat aan hebt.

Woellie123
 
Bedankt Woellie123!! Heb je voorbeeld geprobeerd, mij entry ingevuld en zag al snel dat de functie drawRectangle gewoon meer tijd in beslag neemt dan de functie fillRectangle.

Super bedankt voor je duidelijke voorbeeld!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan