Класс CDC переопределяет и эту функцию подобно предыдущей:
BOOLLineTo( intx, inty );//Рисовать линию до позиции x, y
BOOLLineTo ( POINTaPoint);// Рисовать линию допозиции, определённой // aPoint.
Функция возвращает TRUE, если линия нарисована. Текущая позиция перемещается в точку, указанную в конце линии. Это позволяет рисовать серию соединённых линий.
3) Rectangle(). Рисование прямоугольника.
Ниже приводится прототип одного из вариантов этой функции:
BOOL Rectangle(int x1, int y1, int x1, int y2);
Здесь x1, y1, x2, y2- соответственно координаты левого верхнего и правого нижнего углов прямоугольника.
Пример.
pDC->Rectangle(100,100,300,405);
Если была выбрана кисть, то она закрасит прямоугольник.
4) Ellipse(). Рисование эллипса и, как частный случай, окружности.
Ниже приводится прототип одного из вариантов этой функции:
BOOL Ellipse(int x1, int y1, int x1, int y2);
Здесь x1, y1, x2, y2- соответственно координаты левого верхнего и правого нижнего углов прямоугольника, в который вписан эллипс.
Пример.
pDC->Ellipse (400,300,200,50);
Если была выбрана кисть, то она закрасит эллипс.
5) Arc(). Рисование дуги, эллипса и, как частный случай, окружности.
Можно рисовать любые дуги и незамкнутые фрагменты эллипсов и окружностей.
Если будут нарисованы эллипсы или окружности, они останутся незакрашенными.
Ниже приводится прототип одного из вариантов этой функции:
BOOL Ellipse(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
Здесь x1, y1, x2, y2- соответственно координаты левого верхнего и правого нижнего углов прямоугольника, в который вписана дуга .
(x3, y3), (x4, y4)- соответственно координаты начальной и конечной точек рисуемого сегмента. Сегмент рисуется против часовой точки. Если координаты этих точек совпадают, то нарисованная кривая будет сегментом окружности.
Пример.
pDC->Arc(50,50,150,150,100,50,150,100);
6) SetPixel( x, y, цвет); Рисование по пикселям. Пиксель с координатами x,y приобретает заданный с помощью RGB() атрибут (цвет).
Пример
pDC->SetPixel(120,235,RGB(255,0,0));
В процессе рисования может понадобиться определить текущий атрибут пикселя с заданными координатами. Для этого служит метод GetPixel(x,y); . Он возвращает значение типа COLORREF. Чтобы узнать значение каждой в отдельности составляющей Red,Green и Blue используются соответственно функции GetRValue(), GetGValue(), GetBValue().
Пример:
COLORREF atribut;
atribut=pDC->GetPixel(200,200);
unsigned int colorRed,colorGreen,colorBlue;
colorRed=GetRValue(atribut);
colorGreen=GetGValue(atribut);
colorBlue=GetBValue(atribut);
Если имеется массив точек и требуется соединить линией каждую последующую точку с предыдущей,можно использовать метод PolyLine(), в котором первый параметр представляет собой указатель на массив объектов класса CPoint или элементов типа POINT, а второй- количество точек.
Пример:
CPoint a[200];
for(int i=0;i<200;i++)
{
a[i].x=300+i;
a[i].y=200+40*sin(0.1*(double)i);
pDC->SetPixel(i+100,i,RGB(0,0,255));
}
В примере построение синусоиды можно было бы реализовать после выхода из цикла, применив метод
pDC->Polyline(a,200);
4 Пример функции OnDraw() для рисования
void CMyView::OnDraw(CDC*pDC /*pDC*/)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CPen pen;//Создан объект pen- перо
pen.CreatePen(PS_DOT,1,RGB(0,0,255));
//Создано непосредственнo само перо.Oно рисует точечную линию толщиной 1 пиксель голубого цвета
CPen*pOldPen=pDC->SelectObject(&pen);
//Теперь это перо выбрали для работы
//Одновременнo записали адрес старого пера в указатель.
//Старое, по умолчанию, рисует сплошной, чёрной //линией, толщиной 1 пиксель
CBrush brush(HS_DIAGCROSS,RGB(0,0,255));
//Создали кисть. Синяя диагональная штриховка
pDC->SelectObject(brush);// Выбрали эту кисть
pDC->MoveTo(10,10);
//Установили курсор в точку (10,10)
//Рисуем последовательность линий
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.