Глава 25. Графический интерфейс устройства_______________________707

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

Базовые методы: MoveTo и LineTo. С конкретным контекстом устройства всегда связана текущая позиция (current position). Эта текущая позиция представляет собой невидимую точку внутри области рисования TDC. Можно представлять себе эту текущую позицию как кончик компьютерного карандаша, Можно поднять карандаш и опустить его в другом месте или переместить его кончик из одной точки страницы в другую, проведя таким образом линию.

Можно промоделировать эту ситуацию с помощью контекста устройства, используя методы MoveTo () и LineTo (). Метод MoveTo () "поднимает" текущую позицию и перемещает ее в другую точку, не проводя линию. Аналогично метод LineTo () перемещает текущую позицию, соединяя при этом две точки линией.

Функция перемещения текущей позиции может принимать одну из трех форм. Все они достаточно просты. Для первой формы требуются координаты пары точек, вторая просто использует объект Tpoint целевой точки.

// Перемещение в точку с координатами (10, 20) dc.MoveTo(10, 20);

// TPoint pnt(10, 20) ;

dc.MoveTo(pnt) ;

Третья форма MoveTo о -позволяет перемещать текущую позицию, сохраняя при этом предыдущую. Следующий фрагмент кода, хотя может быть, довольно глупый и бесполезный, демонстрирует, как можно прыгать двенадцать раз между двумя точками.

// Двенадцать прыжков взад-вперед TPoint pnti, pnt2(500, 200);

for(int loop = 0; loop < 12; loop++) {

dc.MoveTo(pnt2, pnti);

pnt2 = pnti;

}•• \

Здесь текущая позиция сохраняется в переменной pnti и затем перемещается в точку, определяемую переменной pnt2.

Методы LineTo () аналогичны MoveTo о за исключением того, что для них нет формы, подобной третьей для MoveTo ().

// Предполагая, что текущая позиция — (.10, 10) , рисуем // короткую горизонтальную линию dc.LineTo(50, 10);