-
Dec 30th, 2017, 01:45 PM
#1
Thread Starter
New Member
XY Coordinates
Hi, I'm new to Visual Basic (since this week), and I have encountered my first problem...
I'm trying to display a grid of pictures in a 6 by 7 pattern, so 6 rows, 7 columns :
Dim TheGrid(6, 7) as PictureBox
Dim Row as short
Dim Col as short
For Row = 1 To 6
For Column = 1 To 7
TheGrid(Row, Column) = New PictureBox
TheGrid(Row, Column).Name = "Cell" + Trim(Str(Row)) + "_" + Trim(Str(Column))
TheGrid(Row, Column).BackgroundImage = My.Resources.emptycell
TheGrid(Row, Column).Location = New Point(10 + (50 * Row), 10 + (50 * Column))
TheGrid(Row, Column).Size = New Size(40, 40)
TheGrid(Row, Column).Visible = True
TheGrid(Row, Column).Tag = 0
Me.Controls.Add(TheGrid(Row, Column))
Next Column
Next Row
Somehow, the result of my sourcecode is a 7 (rows) by 6 (columns) pattern...and I don't know why.
I do have to specify the coordinates as X (row), Y (column) right..?
I know VB starts array indexes from 0, but I'm starting at 1. But that can't be the problem.
What am I doing wrong here?
Tnx
-
Dec 30th, 2017, 03:00 PM
#2
Re: XY Coordinates
Coordinates are goofy things, it's important to understand what each word means.
On the monitor (and in Cartesian coordinates), the X axis is horizontal, with 0 at the left edge and increasing to the right. That means the X axis represents "columns".
On the monitor the Y axis is vertical, with 0 at the top edge and increasing to the bottom. (This is inverted from standard Cartesian coordinates.) That means the Y axis represents "rows".
You're treating rows as X coordinates and columns as Y coordinates, which will cause them to be transposed.
In Visual Basic, arrays are defined by the upper bounds of their rank, not the size. So your (6, 7) array actually has 7 rows and 8 columns. You should define it as (5, 6), that's a 6 row, 7 column array.
This answer is wrong. You should be using TableAdapter and Dictionaries instead.
-
Dec 30th, 2017, 04:42 PM
#3
Thread Starter
New Member
Re: XY Coordinates
Thanks a lot!
I switched places for the Row and Column in the Location property and indeed...now it works...
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|