Цитата:
Сообщение от mebitek
Стрелки победить немогу!
|
x0,y0 - координаты центра окружности
R-радиус окружности.
x.y - координаты текущего места на окружности, вычисляются по формуле (x-x0)^2+(y-y0)^2=R^2
Далее что то типа этого.
[DllImport("coredll", SetLastError=true)]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
public struct POINT
{
public int x;
public int y;
public POINT(int x, int y)
{
this.x = x;
this.y = y;
}
}
[DllImport("coredll.dll", SetLastError=true)]
public static extern int MoveToEx(
IntPtr hdc,
int X,
int Y,
ref POINT lpPoint);
[DllImport("coredll.dll", SetLastError=true)]
public static extern int LineTo(
IntPtr hdc,
int nXEnd,
int nYEnd);
[DllImport("coredll", SetLastError=true)]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
public void DrawLine(PenAGP pen, int xStart, int yStart, int xEnd, int yEnd)
{lock(this)
{
IntPtr hOldPen = IntPtr.Zero;
hOldPen = GDIPlus.SelectObject(hDC, pen.hPen);
//Set start position
GDIPlus.POINT pt = new GDIPlus.POINT();
GDIPlus.MoveToEx(hDC, xStart, yStart, ref pt);
//Drawe line
GDIPlus.LineTo(hDC, xEnd, yEnd);
GDIPlus.SelectObject(hDC, hOldPen);
}
}
В тексте
Graphics Graphik=null;
Graphik = Graphics.FromControl(this) ;
//тута рисуем стрелку линиями
Graphik.DrawLine(ArrowPen,x0,y0,x,y);
Graphik.DrawLine(ArrowPen,x0,y0,x1,y1);
......
Вот как то так...быстренько набросал, поэтому не полное и могут быть коски естессно, но в общем ничего сложного по-моему в стрелках нет.
Это в коде C#.net, но тут одни Api функции, поэтому перевести на любой язык проблем не будет