Link to home
Start Free TrialLog in
Avatar of zliminator
zliminatorFlag for United States of America

asked on

drawing lines on a grid with skips after every 2 and 3 lines

I'm writing a quick program to print out a grid. I have the code to draw the horiz lines:

     float horizline = 0;
     float vertline = 0;
     RectangleF rect = g.Clip.GetBounds(g);
     SizeF size = rect.Size;
    float myy = size.Height;
     float myx = rect.Right;

     for(horizline = 1;horizline < 20;horizline += 0.1F)
                g.DrawLine(new Pen(Brushes.Black, 0.01f), 0, horizline, myx, horizline);

Then I want to draw the vert lines with an extra space at every 4th and 7th line then repeat.
Its going to be used as notation for piano so the lines will represent the black keys and the spaces between the lines will represent the white keys. The following will draw a line at every interval:

      for (vertline = 1; vertline < 20; vertline += 0.2F)
           g.DrawLine(new Pen(Brushes.Blue, 0.01f), vertline, 0, vertline, myy);

I'm thinking an enum of 7 booleans where the 1st 3 are true, the 4th false, the next 2 are true and the last false. Then have a loop inside the above for loop which checks the enum. Any ideas?

And no, this isn't homework.
ASKER CERTIFIED SOLUTION
Avatar of TommySzalapski
TommySzalapski
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
If you have never used the % operator, then this is a good time to learn it. It is called the modulo operator (or mod for short).
8%7 is read as "eight mod seven" and it basically equals the remainder of a division problem.

So
0%3 == 0
1%3 == 1
2%3 == 2
3%3 == 0
4%3 == 1
5%3 == 2
6%3 == 0
7%3 == 1
8%3 == 2
etc.
So every 4th and 7th line will be found and skipped by the code suggested above.
I haven't tested it, so you might need to change a number or two, but this is the standard way of doing it since the operator is very fast (especially compared to looping through bools)
Avatar of zliminator

ASKER

Of course. I shoulda gave it some more thought. I suspected there might be a more elegant solution.