пользователей: 21212
предметов: 10450
вопросов: 177346
Конспект-online
зарегистрируйся или войди через vk.com чтобы оставить конспект.
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Методи малювання ліній у DirectDraw

В DirectDraw форуме функций для рисования примитивов, как в WinAPI и ее библиотеке GDI. Если линии должны выводиться очень быстро, то для этого будем использовать прямой доступ к памяти. В принципе, это единственный способ нарисовать что-то на экране, не считая копирования в поверхность подготовленного изображения. Для начала определимся с переменными, которые понадобятся:

- X1, Y1, Х2, Y2 -цели числа, в которых хранятся координаты двух точек

(начало и конец линии).

- DX, DY - длина отрезка по оси X и Y. DX = Х2-X1, DY = Y2-Y1;

- IOffset - переменная для хранения указателя на точку в видеопамяти, куда будем выводить следующую точку;

- NS - переменная-счетчик, определяющий изменение редко переменной координаты. Алгоритм построен так, что сначала определяется ось, по которой изменение происходит чаще.

Например, если отрезок имеет координаты точек (0,0) и (100,10), то по горизонтали будет 100 точек, а по вертикали 10 таким образом чаще будем рисовать линию вправо, а иногда вниз. Значение переменной NS будет определять, когда нужно опуститься вниз. Прежде чем рисовать отрезок, нужно еще проверить соотношение координат. Если координата Y2 больше Y1, то следует поменять точки местами и рисовать в обратном направлении. Это необходимо, чтобы не писать код рисования снизу вверх, а только сверху вниз. Определяем положение первой точки в видеопамяти и заносим это значение в переменную iOffset. В результате, сначала умножаем координату Y1 на ширину строки (desc. LPitch), чтобы найти в видеопамяти строку Y1, а потом просто добавляем к результату координату Х1.


17.01.2016; 23:25
хиты: 13
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2016. All Rights Reserved. помощь