Вернуться наверх
aco.ifmo.ru photonic
вернуться в оглавление предыдущая глава предыдущий параграф следующий параграф следующая глава


4.5. Функции для визуализации графических примитивов

Функции этой группы предназначены для рисования прямых и ломаных линий, окружностей и отрезков дуг.

Вывод строки текста

BOOL CDC::TextOut (int x, int y, const CString& str) - вывод строки текста. Параметры:
(x, y) - координаты для вывода текста
str - строка текста.

Например, вывод подписей к осям:

pDC->SetBkMode(TRANSPARENT);
pDC->TextOut( 95, 15,"x");
pDC->TextOut( 5, 105,"y");

Рисование точки

COLORREF CDC::SetPixel (int x, int y, COLORREF crColor) - рисование точки. Параметры:
(x, y) - координаты точки
color - цвет точки, задается в виде структуры RGB(red, green, blue), где red, green, blue - величина красного, зеленого и синего цвета в диапазоне от 0 до 255.

Например, вывод точечных диаграмм:

for( ... ) // цикл по радиальной координате
{
    for( ... ) // цикл по угловой координате
    {
        // вычисление x и y
        ...
        // рисование точки
        pDC->SetPixel(int(x*100), int(y*100), RGB(255,0,0));
    }
}

Рисование линии

При рисовании линий цвет и стиль линии определяются текущим карандашом CPen.

CPoint CDC::MoveTo (int x, int y) - перемещает курсор к указанной точки без рисования. Параметры:
(x, y) - координаты нового положения курсора.

BOOL CDC::LineTo (int x, int y) - рисует линию и перемещает курсор от предыдущего положения курсора до указанной точки.Параметры:
(x, y) - координаты нового положения курсора.

Например, рисование графика:

// перемещение курсора к начальной точке
pDC->MoveTo(int(x*100), int(y*100));
for( ... ) // цикл по координате x
{
    // вычисление координаты y
    ...
    // рисование линии
    pDC->LineTo(int(x*100), int(y*100));
}

Рисование прямоугольника

При рисовании прямоугольников цвет и стиль линий определяются текущим карандашом CPen, а цвет и стиль заливки - текущей кистью CBrush.

BOOL CDC::Rectangle (int x1, int y1, int x2, int y2) - рисование прямоугольника. Параметры:
(x1, y1) - координаты верхнего левого угла прямоугольника
(x2, y2) - координаты нижнего правого угла прямоугольника.

Пример рисования прямоугольника:

pDC->Rectangle (-200, 100, 200, -100);

Рисование эллипса

При рисовании эллипсов цвет и стиль линий определяются текущим карандашом CPen, а цвет и стиль заливки - текущей кистью CBrush.

BOOL CDC::Ellipse (int x1, int y1, int x2, int y2) - рисует эллипс. Параметры:
(x1, y1) - координаты верхнего левого угла описанного прямоугольника
(x2, y2) - координаты нижнего правого угла описанного прямоугольника.

Пример рисования окружности:

pDC->Ellipse(-100, 100, 100, -100);

Рисование дуги окружности

При рисовании дуги окружности цвет и стиль линий определяются текущим карандашом CPen.

BOOL CDC::Arc (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) - рисование эллиптической дуги. Рисование дуги происходит против часовой стрелки. Параметры:
(x1, y1) - координаты верхнего левого угла описанного прямоугольника
(x2, y2) - координаты нижнего правого угла описанного прямоугольника
(x3, y3) - координаты точки на луче, проходящем через центр эллипса и определяющем начальную точки дуги
(x4, y4) - координаты точки на луче, проходящем через центр эллипса и определяющем конечную точки дуги.

Например, рисование поверхности линзы:

// x, y - координаты вершины поверхности
// r - радиус поверхности
// h - всветовая высота поверхности

// вычисление стрелки поверхности
int l=...
if( r > 0)
{
    xx=x+l;
    // рисование поверхности
    pDC->Arc(x, y+r, x+2*r, y-r, xx, y+h, xx, y-h);
}
else
{
    ...
}

Рисование замкнутой дуги

При рисовании замкнутой дуги цвет и стиль линий определяются текущим карандашом CPen.

BOOL CDC::Chord (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) - рисование замкнутой эллиптической дуги. То же самое, что Arc, но дуга будет замкнутой. Параметры:
(x1, y1) - координаты верхнего левого угла описанного вокруг эллипса прямоугольника
(x2, y2) - координаты нижнего правого угла описанного вокруг эллипса прямоугольника
(x3, y3) - координаты точки на луче, проходящем через центр эллипса и определяющем начальную точки дуги
(x4, y4) - координаты точки на луче, проходящем через центр эллипса и определяющем конечную точки дуги.

Рисование ломаной линии

При рисовании ломаной линии цвет и стиль линий определяются текущим карандашом CPen.

BOOL CDC::Polyline (LPPOINT lpPoints, int nCount) - рисование ломаной линии. Параметры:
lpPoints - массив координат вершин ломаной линии
nCount - количество вершин ломаной линии.

Рисование многоугольника

При рисовании эллипсов цвет и стиль линий определяются текущим карандашом CPen, а цвет и стиль заливки - текущей кистью CBrush.

BOOL CDC::Polygon (LPPOINT lpPoints, int nCount) - рисование многоугольника. Параметры:
lpPoints - массив координат вершин многоугольника
nCount - количество вершин многоугольника.