2D Array naar iets visueels en terug

Status
Niet open voor verdere reacties.

The Mighty Atom

Terugkerende gebruiker
Lid geworden
22 mei 2008
Berichten
1.380
Om maar gelijk to the point te komen:

Hoe kan je het best een 2D array "vertalen" naar een zichtbaar visueel element op je form?
Neem nou deze 2D array:

Code:
        Dim Grid(2, 2) As Image
        Grid(0, 0) = [COLOR="DarkRed"]X[/COLOR] : Grid(0, 1) = [COLOR="DarkRed"]O[/COLOR] : Grid(0, 2) = [COLOR="DarkRed"]X[/COLOR]
        Grid(1, 0) = [COLOR="DarkRed"]O[/COLOR] : Grid(1, 1) = [COLOR="DarkRed"]O[/COLOR] : Grid(1, 2) = [COLOR="DarkRed"]X[/COLOR]
        Grid(2, 0) = [COLOR="DarkRed"]X[/COLOR] : Grid(2, 1) = [COLOR="DarkRed"]X[/COLOR] : Grid(2, 2) = [COLOR="DarkRed"]O[/COLOR]

Waarbij X en O variabelen zijn die een image bevatten die op deze manier zijn gedeclareerd:

Code:
        Dim [COLOR="DarkRed"]O[/COLOR], [COLOR="DarkRed"]X[/COLOR] As Image
        [COLOR="DarkRed"]O[/COLOR] = Image.FromFile("o.png")
        [COLOR="DarkRed"]X[/COLOR] = Image.FromFile("x.png")

(Doe ik bovenstaande uberhaubt op een goede manier?)

Wat je hier dus ziet is eigenlijk een grid van 3 bij 3:

ttt.gif


Nou is mijn vraag, als ik bijvoorbeeld arr(1, 1) verander van O naar X zou er dus een X in het midden van de grid moeten verschijnen en de O moet verdwijnen (de X mag niet over de O heen geplaatst worden). Maar eigenlijk moet het ook andersom:

Als je dan in het midden van de grid klikt (de grid is eigenlijk gewoon een picturebox met een als image een dambord/schaakbord patroon), dus locatie 1, 1, zou er een X of een O moeten verschijnen.

Iemand een idee hoe ik dat moet aanpakken? Het gaat dus om de communicatie tussen de 2D array en visuele elementen op het form.
 
Laatst bewerkt:
Stop je 2D-array in een class.
Plaats een picturebox op je form.

In PictureBox1_Paint:
- eerst picturebox helemaal uitwissen (bijvoorbeeld met FillRectangle met white)
- dan een vertaling van je 2D-array naar je picturebox; (oftewel alles helemaal opnieuw tekenen)

In de PictureBox1_MouseDown:
- bepaal de muiscoordinaten
- wijzig de inhoud van je 2D-array
- PictureBox1.Invalidate() aanroepen (dan wordt je paint-routine getriggerd)
 
Stop je 2D-array in een class.

Je bedoelt, mn 2D array in een class vb bestand zetten? Of...?
Ik ben helaas wat minder bekend met het maken van eigen classes...

- eerst picturebox helemaal uitwissen (bijvoorbeeld met FillRectangle met white)

Dan is mn grid achtergrond toch ook niet meer zichtbaar?

- dan een vertaling van je 2D-array naar je picturebox; (oftewel alles helemaal opnieuw tekenen)

Ja dat is nou juist mijn probleem. Hoe moet ik dat aanpakken?
 
Ik heb een demo online gezet:

http://www.dyitto.com/downloads/visualbasic/

en dan linkje '2D Visual'

Daarmee download je een eenvoudig voorbeeldproject in VB008, dat ik zojuist aan de hand van het door jou gegeven voorbeeld heb gemaakt.

Ik hoop dat dit enkele van jouw vragen beantwoordt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan