ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.06.2019

Просмотров: 95

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа № 8

Студента ИТ 14-1 Красовского Абхая

Організація роботи з графікою на рівні операційної системи - функції API та структури даних

Вариант №9

Цель: Получить навыки в следующих предметных областях:

  • принципы работы c графикой на уровне операционной системы;

  • отрисовка графиков функций


Индивидуальное задание

Реализовать поток, осуществляющий отрисовку в виде графика результатов расчетов функции, полученной в лабораторной №1 в качестве индивидуального задания.

Код:

#include <windows.h>

#include <conio.h>

#include <iostream>

#include <boost/thread/thread.hpp>


using namespace std;

using namespace boost;


mutex Mutex;


int a;

double x, y;


void ThreadF()

{

Mutex.lock();

cout << "Введите a" << endl;

cin >> a;

Mutex.unlock();

}


void main()

{

setlocale(LC_ALL, "rus");

HDC hDC; // дескриптор контекста устройства(объект класса CDC(базовый класс для остальных классов контекстов устройств), содержащий все методы для построения изображения в окне)

HWND hWnd; // дескприптор на консольное окно(устройство вывода)

RECT Rect; // прямоугольник

thread thr(ThreadF);

thr.join();


hWnd=GetConsoleWindow(); // получение дескриптора окна

hDC=GetDC(hWnd); // получение контекста устройства от консольного окна

GetClientRect(hWnd,&Rect); // запись данных консольного окна в объект Rect

Rectangle(hDC,Rect.left,Rect.top,Rect.right,Rect.bottom); // рисование прямоугольника

MoveToEx( // обновляет текущую позицию указанной точки(от которой рисуется линия...)

hDC,

Rect.right / 2, // координата x новой текущей позиции

Rect.top, // координата y новой текущей позиции

0); // старая текущая позиция

LineTo(hDC,Rect.right / 2,Rect.bottom);

MoveToEx(hDC,Rect.left,Rect.bottom / 2,0);

LineTo(hDC, // рисует линию до указанных коордиант

Rect.right, // по x

Rect.bottom / 2); // по y


for (double t = 0; t < 1000; t++)

{

x = 2 * a * cos(t) - a * cos(2 * t);

y = 2 * a * sin(t) - a * sin(2 * t);

SetPixel(hDC,x + 290,150 - y,RGB(255,97,97));

}

_getch();

thr.~thread();

ReleaseDC(hWnd, hDC); // удаляет все объекты из контекста устройства и консольного окна

}

Результат:




















Смотрите также файлы