18105

Графические примитивы API Windows

Лекция

Информатика, кибернетика и программирование

Лабораторная работа №2 Графические примитивы API Windows 1. Отдельные пикселы Функция SetPixel рисует один пиксел растра. Она имеет такие аргументы: SetPixelhdc x y clr где hdc – контекст xy – координаты clr – цвет пиксела. Аргумент clr – имеет тип 4байтного COLORREF причем тр...

Русский

2013-07-06

77.01 KB

8 чел.

Лабораторная работа2

Графические примитивы API Windows

1. Отдельные пикселы

Функция SetPixel рисует один пиксел растра. Она имеет такие аргументы:

SetPixel(hdc, x, y, clr),

где hdc – контекст, x,y – координаты, clr – цвет пиксела. Аргумент clr – имеет тип 4-байтного COLORREF, причем три младших байта соответствуют компонентам Blue, Green, Red (в диапазоне от 0 до 255 каждая), а старший байт не используется. Цвет, кодируемый типом COLORREF, удобно задавать макросом Red(r,g,b). Функция SetPixel сама имеет тип COLORREF – она возвращает значение цвета пиксела. 

2. Линии

В состав API Windows входит несколько функций, которые рисуют прямые и кривые линии:

AngleArc 

дуга окружности с заданием углов

BOOL AngleArc(

 HDC hdc, // контекст устройства 

 int X, // x-координата центра окружности

 int Y, // y-координата центра окружности

 DWORD dwRadius, // радиус окружности 

 FLOAT eStartAngle, // начальный угол дуги

 FLOAT eSweepAngle  // конечный угол дуги

  );

Arc 

дуга эллипса

BOOL Arc(

 HDC hdc, // контекст устройства

 int nLeftRect, // x-координата левого верхнего угла

 int nTopRect, // y-координата левого верхнего угла

 int nRightRect, // x-координата правого нижнего угла

 int nBottomRect, // y-координата правого нижнего угла

 int nXStartArc, // x-координата начальной точки

 int nYStartArc, // y -координата начальной точки

 int nXEndArc, // x-координата конечной точки

 int nYEndArc  // y -координата конечной точки

  );

LineTo

рисование отрезка прямой линии от текущей позиции к заданной точке

BOOL LineTo(

   HDC hdc,      // контекст устройства

   int nXEnd,  // x-координата последней точки линии

   int nYEnd   // y-координата последней точки линии

  );

MoveToEx

задание текущей позиции графического вывода

BOOL MoveToEx(

   HDC hdc, // контекст устройства

   int X, // x- координата

   int Y, // y- координата 

   LPPOINT lpPoint  // адрес старой позиции

  );

Polyline 

ломаная линия из многих связанных между собой отрезков прямых (полилиния)

BOOL Polyline(

   HDC hdc, // контекст устройства

   CONST POINT *lppt, // адрес массива, содержащего конечную точку

   int cPoints  // количество точек в массиве

  );

PolylineTo

ломаная линия из многих связанных между собой отрезков прямых (полилиния)

BOOL PolylineTo(

   HDC hdc, // контекст устройства

   CONST POINT *lppt, // адрес массива точек 

   DWORD cCount  // количество точек в массиве

  );

3. Стиль линии. Перо.

Чтобы начать рисовать линии, напрмер, другим цветом, необходимо создать новое перо и выбрать его в контексте графического устройства. 

Создавая новое перо, нужно обязательно позаботиться об уничтожении предыдущего пера. Не следует пытаться уничтожить стандартные перья.

Типичная последовательность для вывода линии с заданным стилем может быть такой:

HPEN hPen, hPenOld;

hPen = CreatePen(PS_SOLID,1,RGB(255,0,0);

//формат CreatePen(стиль, толщина, цвет)

hPenOld = (HPEN)SelectObject(hdc,hPen);

. . . //здесь рисуем линии

SelectObject(hdc,hPenOld);   //выбираем предыдущее перо

DeleteObject(hPen);          //уничтожаем наше перо

Здесь создается перо, которое соответствует тонкой красной сплошной линии. После использования перо уничтожается.

Задание

Изобразить в центре экрана квадрат, движущийся по окружности и вращающийся вокруг своего центра.

Изменение координат центра квадрата и концов отрезков (сторон квадрата) можно задать через параметрическое уравнение окружности x=r cos t, y=r sint, t[0,2), r-радиус окружности.

Для создания вращения используем цикл, например, while 

t=0;

while(t<12.55){ // два оборота 

 x1=200+r*cos(t); //если окно 400х300

 y1=150+r*sin(t);  

 x2=200+r*cos(t+3.14/2);

 y2=150+r*sin(t+3.14/2);

 // (x1,y1)-координаты первой вершины квадрата

 // (x2,y2)-координаты второй вершины квадрата

 // для каждой следующей добавляем еще 3.14/2

 //находим x3 y3 x4 y4

 MoveToEx(hdc,x1,y1,NULL);

 LineTo(hdc,x2,y2);

 LineTo(hdc,x3,y3);

// аналогичные линии для 3-х других сторон

 t+=0.001;

}

Перед тем как рисовать новую позицию квадрата нужно подождать sleep(int ms) и, взяв белое перо, удалить старую позицию.

Для того, чтобы квадрат двигался по окружности, нужно создать подобный цикл для перемещения центра (вместо фиксированного 200,150).


 

А также другие работы, которые могут Вас заинтересовать

43383. Завдання та система органів державного управління безпекою України 187 KB
  Метою даного дослідження є проведення комплексного аналізу завдань, функцій системи органів державного управління безпекою України, а також розгляд існуючих проблем та перспектив розвитку, які повязані з їх практичним виконанням.
43384. УЧЕТ ЗАТРАТ В НЕЗАВЕРШЕННОМ ПРОИЗВОДСТВЕ РАСПРЕДЕЛЯЕМЫХ РАСХОДОВ И ПРОЧИХ ЗАТРАТ В РАСТЕНИЕВОДСТВЕ В ООО «ЛУЗИНСКОЕ ЗЕРНО» 268.5 KB
  В первой части работы мы рассматриваем теоретические аспекты организации бухгалтерского учета затрат в незавершенном производстве. Здесь указываются нормативное регулирование по учету затрат; объекты и статьи учета затрат в растениеводстве; представлены понятия затрат, издержек и расходов; признание расходов в бухгалтерском учете.
43385. Розробка інфологічної та даталогічної моделі 662 KB
  Для підприємств розроблена спеціальна база даних котра формує список співробітників за допомогою додавання їх в базу користувачем.4 Опис основних процедур перетворення даних 1. Для додавання розроблена відповідна форма в котрій забезпечено введення даних а саме: П. Табельний номер Дата прийому на роботу Оклад Після введення даних вони через компонент Tble котрий призначений для роботи з нашою базою даних bd1.
43386. Задачи статистического изучения загрязнения окружающей среды 315 KB
  Проблема защиты окружающей среды и природных ресурсов настолько важна что нет практически в мире государства которое бы в той или иной мере не пыталось ее решить. Существует множество концепций и методов анализа воздействия экономической деятельности на природную среду и обратного влияния природной среды на экономическую деятельность а также оценки ущерба от загрязнения окружающей среды и эффективности природоохранных мероприятий. Потери рабочего времени в результате повышенной заболеваемости; населения изза загрязнения окружающей среды...
43387. Информационный менеджмент, стратегия и политика организации 108.5 KB
  В круг задач информационного менеджмента входят также разработка внедрение эксплуатация и развитие автоматизированных информационных систем и сетей обеспечивающих деятельность предприятия организации. Деятельность любого предприятия зависит от степени воздействия на него внешней среды представляющей сферу прямого и косвенного воздействия АТП которые серьезно...
43388. Определение реакций опор твердого тела 2.53 MB
  Составим уравнения моментов сил относительно точки С и А.3 Составим уравнение равновесия для тела CD: ∑ Fkx = 0 отсюда RD = 0 Для всей конструкции: ∑ Fkx = 0; Q – P1∙cos60 – XB – P2 = 0 откуда XB = 2 кН Составим уравнение моментов сил относительно точки А: ∑ MА= 0 Q∙2 M P1∙sin60∙2 – P1∙cos60∙4 – P2∙2 – RD∙7 – YB∙4 = 0 откуда YB = 7196 кН Подставляя найденные значения ХB и YB в уравнение 1 найдем: Итак при шарнирном соединении в точке С модуль реакции B меньше чем при соединении скользящей заделкой. Составим уравнение моментов...
43389. История развития социальной помощи в России 208 KB
  Это было выражено в более расширенной системе помощи которая охватывала и устоявшиеся группы населения и новые формы призрения и воспитания детей предупреждения обнищания населения. В России до начала XVIII века вообще не существовало какойлибо узаконенной формы общественного призрения детей. Первым проявил инициативу митрополит Иов организовавший в 1707 году на собственные средства в Холмовской Успенской обители заведение для призрения сирот и зазорнорожденных незаконнорожденных детей. После смерти Петра I за...
43390. Анализ основных аспектов и проблемных моментов обеспечения конкурентоспособности ООО «Основание» 454 KB
  Важным элементом конкурентоспособности фирмы является конкурентоспособность товара. Это такой уровень его экономических, технических и эксплуатационных параметров, который позволяет выдержать соперничество (конкуренцию) с другими аналогичными товарами на рынке. Кроме того, конкурентоспособность - сравнительная характеристика товара, содержащая комплексную оценку всей совокупности производственных, коммерческих, организационных и экономических показателей относительно она определяется совокупностью потребительских свойств данного товара-конкурента по степени соответствия общественным потребностям с учетом затрат на их удовлетворение, цен, условий поставки и эксплуатации в процессе производительного и (или) личного потребления.
43391. Эстетические аспекты и принципы ведения электронного маркетинга 324.5 KB
  Электронный маркетинг интернет магазин сбор данных обработка данных рекламные компании экономическая эффективность. В курсовой работе проводится оценка эффективности маркетинговой деятельности в сети Интернет проектируется и анализируется интернет-магазин рассматриваются эстетические аспекты и принципы ведения электронного маркетинга.2 Кодекс использования Интернета для маркетинговых целей Американской маркетинговой ассоциации. ПРОЕКТИРОВАНИЕ И АНАЛИЗ ИНТЕРНЕТМАГАЗИНА ООО...