ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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); // удаляет все объекты из контекста устройства и консольного окна
}
Результат: