• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.


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

    Класс графика

    С помощью Studio .NET введите в состав проекта новый generic-класс CGraph, не указывая имени базового класса и не включая флажок Virtual destructor. В файл декларации нового класса введите вручную вспомогательный класс CDPoint, необходимость в котором мы обсуждали ранее. Затем добавьте объявление структуры TData, которая собирает воедино все данные, используемые при построении графика. Начальная буква Т в имени класса осталась со времен работы в среде Borland. Там принято все классы именовать начиная с буквы Т (Type), означающей создание нового типа данных. Но в отличие от старой реализации графика, которая, возможно, знакома читателю по книге "Технологии программирования на языке C++" (Издательство СПбГТУ, 1997), мы введем в класс CGraph некоторые новые возможности:

    # pragma once
    class CDPoint
    {
    public:
    //=== Две вещественные координаты точки на плоскости
    double x, у;
    //======= Стандартный набор конструкторов и операций
    CDPoint () {
    х=0.; у=0.;
    }
    CDPoint(double xx, double yy){
    х=хх;
    У=УУ;
    }
    CDPoints operator=(const CDPointi pt) {
    x = pt.x;
    У = pt.y; return *this;
    }
    CDPoint(const CDPointS pt) {
    *this – pt; } };
    //===== Вспомогательные данные, характеризующие
    //== последовательность координат вдоль одной из осей
    struct TData (
    //===== Порядок в нормализованном представлении числа
    int Power; //===== Флаг оси X
    bool bХ; double
    //======= Экстремумы
    Min, Max,
    //======= Множитель – (10 в степени Power)
    {
    Factor,
    //======= Шаг вдоль оси (мантисса)
    Step,
    //======= Реальный шаг
    dStep,
    //==== Первая и последняя координаты (мантиссы)
    Start, End,
    // ======= Первая и последняя координаты
    dStart, dEnd; };
    //===== Класс, реализующий функции плоского графика
    class CGraph { public:
    //===== Данные, характеризующие данные вдоль осей
    TData m_DataX, m_DataY;
    //===== Контейнер точек графика
    vector <CDPoint>& m_Points;
    //===== Текущие размеры окна графика
    CSize m_Size;
    //===== Экранные координаты центра окна
    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 используется как для последовательности абсцисс, так и ординат.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.