Иллюстрированный самоучитель по Visual Studio.Net


Класс графика - часть 2


CPoint m_Center;

//===== Заголовок и наименования осей

CString m_sTitle, m_sX, m_sY;

//===== Перо для рисования

CPen m_Pen;

//===== Два типа шрифтов

CFont m_TitleFont, m_Font;

//===== Высота буквы (зависит от шрифта)

int m_LH,

//===== Толщина пера

m_Width;

//===== Цвет пера COLORREF m_Clr;

//======= Методы для управления графиком

CGraph(vector<CDPoint>& pt, CString sTitle, CString sX, CString sY) ;

virtual -CGraph();

//===== Заполнение TData для любой из осей

void Scale(TDataS data);

//===== Переход к логическим координатам точек

int MapToLogX (double d);

int MapToLogY (double d);

//===== Изображение в заданном контексте

void Draw (CDC *pDC);

//===== Изображение одной линии

void DrawLine(CDC *pDC) ;

//===== Подготовка цифровой метки на оси

CString MakeLabel(bool bx, doubles d);

};

Класс CGraph сделан с учетом возможности развития его функциональности, так чтобы вы могли добавить в него нечто и он мог бы справиться с несколькими кривыми одновременно. Фактически он представляет собой упрощенную версию того класса, которым мы пользуемся для отображения результатов расчета поля в двухмерной постановке. Отметьте, что структура TData используется как для последовательности абсцисс, так и ординат.

Алгоритм нормирования абсцисс и ординат проще создать, чем кратко и понятно описать. Тем не менее попробуем дать ключ к тому, что происходит. Мы хотим, чтобы размеры графика отслеживали размеры окна, а числа, используемые для разметки осей, из любого разумного диапазона, как можно дольше оставались читабельными. Задача трудновыполнимая, если динамически не изменять шрифт. В данной реализации мы не будем подбирать, а используем только два фиксированных шрифта: для оцифровки осей и для вывода заголовка графика. Обычно при построении графиков числа, используемые для оцифровки осей (мантиссы), укладываются в некоторый разумный диапазон и принадлежат множеству чисел, кратных по модулю 10, стандартным значениям шага мантиссы (2, 2.5, 5 и 10).


Начало  Назад  Вперед



Книжный магазин