Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • WinAPI. HDC .

    WinAPI HDC Есть четыре типа контекста устройств:
    1. Display Device Contexts - Позволяет рисовать в видео дисплее.
    2. Printer - Операции рисования через принтер.
    3. Memory - Для рисования в растровом изображении.
    4. Information - Извлечение данных с устройств ПК.
    При рисовании по окну программы, используется первый тип. Получить контекст дисплея можно с помощью следующую функцию:
    HDC GetDC (
    HWND hWnd
    );
    Данная функция возвращает переменную типа HDC, следовательно ее нужно создать для сохранения дескриптора устройства, через которое будет происходить рисование в окне. Функция принимает всего один аргумент типа HWND, в котором хранится дескриптор выбранного окна для рисования.
    Следующий шаг это создания параметров кисти для рисования:
    HPEN CreatePen(
    int fnPenStyle,
    int nWidth,
    COLORREF crColor
    );
    Первый параметр fnPenStyle - это стиль рисования линии, второй nWidth - толщина толщина линии, третий crColor - цвет линии ( С помощью функции RGB(int,int,int) цвет легко регулировать смешивая три основных цвета).
    Чтоб применить созданную кисть к рисованию линий, нужно привязать ее к контексту устройства HDC, если этого не сделать будет применена кисть по умолчанию :
    HGDIOBJ SelectObject(
    HDC hdc,
    HGDIOBJ hgdiobj
    );
    Теперь когда все подготовлено можно задействовать любые функции которые рисуют все наборы линий и фигур из них. Для этого нужно выбрать первую точку отсчета функцией :
    BOOL MoveToEx(
    HDC hdc,
    int X,
    int Y,
    LPPOINT lpPoint
    );
    Она принимает четыре параметра, первые три это контекст устройства HDC, два других координаты (x,y).
    После создания главной точки можно рисовать любые фигуры, например линию функцией с параметрами HDC и двумя конечными точками линии:
    BOOL LineTo(
    HDC hdc,
    int nXEnd,
    int nYEnd
    );
    В целом, чтоб нарисовать простую линию, достаточно разместить эти строчки в любом месте откуда видна переменная hwnd, в которой хранится дескриптор окна:
    HDC hDC = GetDC (hwnd);

    HPEN hPen = CreatePen (PS_SOLID, 3, RGB(255, 0, 0));

    SelectObject (hDC, hPen);

    MoveToEx(hDC, 50, 50, NULL);

    LineTo(hDC, 200, 50);



    Читайте больше в категории: Программирование

    2016-07-10 18:48:02



    Другие статьи:

    Android. Intent

    STM32. Передача данных по USART

    STM32. DMA controller

    STM32. Программирование на СИ

    JavaScript. Введение

    PHP. Типовые команды MySQL

    PHP. $_COOKIE

    STM32. USART

    STM32. Контроллеры прерываний NVIC и EXTI

    Як насправді виглядав Невицький Замок