We help IT Professionals succeed at work.

# Plotting a circle with system.drawing including rotated labels

on
386 Views
I am trying to use system.drawing to draw a circle divided into a variable amount of points, with a text label at each of the points, preferably at an angle matching the current point on the circle (so the labels 'fan out' from the center).

Before I attempt to try and stitch this into my database backend, the first thing I'm trying to do is simply draw the circle as a series of connected points. Something along these lines

for t = 1 to 360 step 10
x = cos(t)
y = sin(t)
pts(cpt) = New Point(x,y)
next
g.DrawCurve(New Pen(Color.Red), pts, 0.8F)

Although obviously with a bit more too it than that. However, I don't think my maths is quite up to the task, and the above method doesn't take into account the labels, so probably isn't the way to go anyway.

I should make it clear I'm not just trying to draw a circle - I'm trying to plot points and arrange them in a circle, if that makes sense.

Been searching Google, but can't really find anything about drawing a circle from scratch.
Comment
Watch Question

## View Solution Only

Commented:
Point is for integer points only. You need PointF

You can do a debug.print(pts(cpt).x & " " & pts(cpt).y) to verify that

Commented:
Thanks for the tip, but to be honest, at this stage I'm not actually that bothered about the accuracy of the point position - the first thing I need to do is draw a circle, and the snippet above didn't seem to do the trick.

Just to re-iterate the question; I want to draw a circle, and at a variable number of points around it, put text labels at an angle equivalent to that point on the circle.

Commented:
yes, but the problem is 0<cos(x) <1, so putting it in a Point object will force it to round off to 0 or 1

How about you put 100cos(x) into the point?

Commented:
I see what your saying. Do you have an example of code which draws a circle using PointF?

Do you know how to draw text at an angle?, assuming, of course, I can get that far!

Commented:
PointF, just exactly the same as what you are doing :)

Just declare PointF instead of Point

Also, I think multiplying your co-ordinates will help, otherwise your circle will be too small??

Ummm.... drawing text at an angle
I would try drawing text on a Bitmap first, then apply a transform filter to it. Try googling for "rotating an image with VB.Net"
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)

Commented:
Thanks, I think it's a bit mean to give a C though... I did answer the original question

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

###### Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

Deciding to stick with EE.

Mohamed Asif

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
###### Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Connect with Certified Experts to gain insight and support on specific technology challenges including:

• Troubleshooting
• Research
• Professional Opinions
Unlock the solution to this question.