Dots = circle = System.Windows.Shapes.Ellipse
The code to draw the number of required circles to the provided number of the guess took me quite awhile to get right. The reason was purely human - I was an idiot. I forgot that I was working with Silverlight not a windows form control. Under Silverlight graphic controls there is no API call for "move to" and there is no "circle". I sat there for some time trying to work out what the aardvarks it would take to draw a simple circle on code. I knew what I wanted to do - provide a routine with a number (integer) representing a value to be guessed and have the routine display the "guess" number of dots for the child to count.
What I did not count on was "zero-relativity" in drawing movement. This is really the only way *I* can describe the workings of the TranslateTransform() function from the System.Windows.Media package. To understand this function you have to remember your Matrix math (1st year Math stuff) and that a translation is a movement of a point around some source for a specified delta (or distance-difference). More simply put, TranslateTransform sets up the dx and dy of the translation matrix.
I wont go into Matrix math here (for a great article on 2D transformations see here under "Homogeneous Coordinates"). Needless to say it is easier to just do than explain at this point. Every translation is from a clear [0,0] location on the canvas. So no matter where on the canvas you drew the cursor always references the [0,0] position to translate from. This is obvious and simple - once I realised I was a Homer Simpson.