2014-02-05 3 views
0

Я рисую форму - с прямыми линиями - как это:Нарисуйте многоугольник с дугой вдоль одной стороны

PointF [] BCArray = new PointF[8]; 
double[,] BC = new double[,] 
{ 
{0, 0}, 
{0, 77}, 
{45, 77}, 
{45, 12}, 
{32, 12}, 
{32, 27}, 
{15, 27}, 
{15, 0}, 
}; 

for (int i = 0; i < BC.Length/2; i++) 
{ 
double X = BC[i, 0]; 
double Y = BC[i, 1]; 
PointF buildpoint = new PointF((float)plusCD(X), (float)plusCD(Y)); 
BCArray.SetValue(buildpoint, i); 
} 

System.Drawing.Drawing2D.HatchBrush pattern = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.BackwardDiagonal, Color.Black, Color.White); 
g.FillPolygon(pattern, BCArray); 

Между первой точки (0,0) и второй (0,77) I нужно провести дугу. Таким образом, линия идет от 0,0 до 0,10, а затем в дуге с радиусом 40 до 0,50, а затем, прямо до 0,77.

Не знаю, как это сделать. Спасибо за любую помощь.

ответ

0

Вы должны использовать GraphicsPath и заполнить его FillPath.

Там вы можете смешать прямые линии, если Безье кривые, которых может быть достаточно для выполнения вашей задачи. Я не думаю, что вы действительно можете нарисовать круглую дугу с кривыми Безье, но вы можете приблизиться довольно хорошо.

Попробуйте, давайте посмотрим, что вы получите.

Чтобы приблизить круг взглянуть на этот краткий учебник: http://www.whizkidtech.redprince.net/bezier/circle/kappa/

+0

Спасибо за это. Похоже, что это сработает. –

+0

Я добавил ссылку на приближение круга. – pid

Смежные вопросы