Arc

Рисует дугу эллипса, вписанного в прямоугольник с углами в (x1,y1) и (x2,y2). Границы дуги отсекаются линиями из центра эллипса, идущими к двум точкам с координатами (x3,y3) и (x4,y4).

void  Arc(
   int         x1,      // координата X верхнего левого угла прямоугольника
   int         y1,      // координата Y верхнего левого угла прямоугольника
   int         x2,      // координата X нижнего правого угла прямоугольника
   int         y2,      // координата Y нижнего правого угла прямоугольника
   int         x3,      // координата X первой точки для нахождения границы дуги
   int         y3,      // координата Y первой точки для нахождения границы дуги
   int         x4,      // координата X второй точки для нахождения границы дуги
   int         y4,      // координата Y второй точки для нахождения границы дуги
   const uint  clr      // цвет
   );

Параметры

x1

[in]  Координата X левого верхнего угла, определяющего прямоугольник.

y1

[in]  Координата Y левого верхнего угла, определяющего прямоугольник.

x2

[in]  Координата X правого нижнего угла, определяющего прямоугольник.

y2

[in]  Координата Y правого нижнего угла, определяющего прямоугольник.

x3

[in]  Координата X первой точки, к которой проведена линия из центра прямоугольника для получения границы дуги.

y3

[in]  Координата Y первой точки, к которой проведена линия из центра прямоугольника для получения границы дуги.

x4

[in]  Координата X второй точки, к которой проведена линия из центра прямоугольника для получения границы дуги.

y4

[in]  Координата Y второй точки, к которой проведена линия из центра прямоугольника для получения границы дуги.

clr

[in]  Цвет в формате ARGB. Для преобразования цвета в формат ARGB используйте функцию ColorToARGB().

 

Рисует дугу эллипса с центром в точке (x,y), вписанного в прямоугольник с радиусами rx и ry. Границы дуги отсекаются лучами из центра эллипса, заданными углами fi3 и fi4.

void  Arc(
   int         x,       // координата X центра эллипса
   int         y,       // координата Y центра эллипса
   int         rx,      // радиус эллипса по координате X
   int         ry,      // радиус эллипса по координате Y
   int         fi3,     // угол луча из центра эллипса, задающий первую границу дуги
   int         fi4,     // угол луча из центра эллипса, задающий вторую границу дуги
   const uint  clr      // цвет
   );

Рисует дугу эллипса с центром в точке (x,y), вписанного в прямоугольник с радиусами rx и ry, и возвращает координаты границ дуги. Границы дуги отсекаются лучами из центра эллипса, заданными углами fi3 и fi4.

void  Arc(
   int         x,       // координата X центра эллипса
   int         y,       // координата Y центра эллипса
   int         rx,      // радиус эллипса по координате X
   int         ry,      // радиус эллипса по координате Y
   int         fi3,     // угол луча из центра эллипса, задающий первую границу дуги
   int         fi4,     // угол луча из центра эллипса, задающий вторую границу дуги
   int&        x3,      // координата X первой границы дуги
   int&        y3,      // координата Y первой границы дуги
   int&        x4,      // координата X второй границы дуги
   int&        y4,      // координата Y второй границы дуги
   const uint  clr      // цвет
   );

Параметры

x

[in]  Координата X центра эллипса.

y

[in]  Координата Y центра эллипса.

rx

[in]  Радиус эллипса по координате X, в пикселях.

ry

[in]  Радиус эллипса по координате Y, в пикселях.

fi3

[in]  Угол в радианах, задающий первую границу дуги

fi4

[in]  Угол в радианах, задающий вторую границу дуги

x3

[out] Переменная для получения координаты X первой границы дуги.

y3

[out] Переменная для получения координаты Y первой границы дуги.

x4

[out] Переменная для получения координаты X второй границы дуги.

y4

[out] Переменная для получения координаты Y второй границы дуги.

clr

[in]  Цвет в формате ARGB. Для преобразования цвета в формат ARGB используйте функцию ColorToARGB().

Примеры вызова методов класса:

#include <Canvas\Canvas.mqh>
CCanvas canvas;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int      Width=600;
   int      Height=400;
//--- create canvas
   if(!canvas.CreateBitmapLabel(0,0,"CirclesCanvas",30,30,Width,Height))
     {
      Print("Error creating canvas: ",GetLastError());
     }
//--- clear canvas
   canvas.Erase(clrWhite);
//--- draw rectangle
   canvas.Rectangle(215-190,215-120,215+190,215+120,clrGray);
//--- draw first arc
   canvas.Arc(215,215, 190,120,M_PI_4,2*M_PI-M_PI_4,ColorToARGB(clrRed));
   int x1,y1,x2,y2;
//--- draw second arc
   canvas.Arc(215,215, 190,120,2*M_PI-M_PI_4,2*M_PI+M_PI_4,x1,y1,x2,y2,ColorToARGB(clrGreen));
//--- print coordinates of arc 
   PrintFormat("First point of arc at (%G,%G), second point of arc at (%G,%G)",x1,y1,x2,y2);
   canvas.CircleAA(x1,y1,3, ColorToARGB(clrRed));
   canvas.CircleAA(x2,y2,3, ColorToARGB(clrBlue));
//--- show updated canvas
   canvas.Update();   
  }