КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Последовательность выполнения. Задание для самостоятельной работы
Задание для самостоятельной работы Возвращаемое значение Параметры Возвращаемое значение Параметры dx [in] Вещественное число, которое задаёт горизонтальную компоненту преобразования. dy [in] Вещественное число, которое задаёт вертикальную компоненту преобразования. order [in] Необязательный. Элемент перечисляемого типа MatrixOrder, который определяет порядок произведения матриц преобразования. Значение MatrixOrderPrepend означает, что матрица преобразования располагается слева, а MatrixOrderAppend означает, что матрица преобразования располагается справа. Значение по умолчанию MatrixOrderPrepend. В случае успеха возвращает значение Ok, которое является элементом перечисления Status. В случае ошибки возвращает одно из значений перечисления Status.
Метод ScaleTransform изменяет матрицу преобразования данного графического объекта путём произведения самой себя на матрицу масштабирования.
sx [in] Вещественное число, которое задаёт горизонтальный коэффициент масштабирования в матрице масштабирования. sy [in] Вещественное число, которое задаёт вертикальный коэффициент масштабирования в матрице масштабирования. order [in] Необязательный. Элемент перечисляемого типа MatrixOrder, который определяет порядок произведения матриц преобразования. Значение MatrixOrderPrepend означает, что матрица преобразования располагается слева, а MatrixOrderAppend означает, что матрица преобразования располагается справа. Значение по умолчанию MatrixOrderPrepend В случае успеха возвращает значение Ok, которое является элементом перечисления Status. В случае ошибки возвращает одно из значений перечисления Status.
Цель. Преобразование цветовых компонентов между RGB и HSV. Двумерная визуализация пространства HSV. Масштабирование средствами GDI+. Задание. Разработать Win32 приложение, демонстрирующее представление цветовой модели HSV в виде круговой диаграммы. При перемещении указателя мыши с нажатой левой клавишей выводить параметры текущей цветовой точки в форматах RGB и HSV. При нажатии клавиш «+», «–» производить масштабирование изображения.
Примечание: Клавиша «+» на дополнительной клавиатуре имеет код 0x6b Клавиша «–» на дополнительной клавиатуре имеет код 0x6d Клавиша «Enter» как на основной так и на дополнительной клавиатуре имеет код 0x13
1. Создать проект Win32 с именем «Lab3» 2. Подключить GDI+ 3. Создать обработчик события WM_PAINT • объявить прототип глобальной функции OnPaint следующего вида: void OnPaint(HWND hwnd, HDC hdc);
• описать реализацию функции OnPaint с пустым телом • В функции WndProc добавить обработчик сообщения WM_PAINT case WM_PAINT: hdc = BeginPaint(hWnd, &ps); OnPaint(hWnd, hdc); EndPaint(hWnd, &ps); break;
4. Создать функцию построения графического изображения • Объявить глобальную переменную. Она будет содержать построенную цветовую модель Bitmap *bitmap = NULL;
• Объявить прототип глобальной функции для построения цветовой модели: void BuildBitmap(Bitmap *bmp, const int Radius);
• Описать реализацию функции BuildBitmap. Ниже в качестве примера приведён вывод точки bmp->SetPixel(0, 0, Color(255, 0, 0));
• В функции _tWinMain, после MyRegisterClass добавить вызов созданной функции BuildBitmap const int Radius = 150; bitmap = new Bitmap(2*Radius, 2*Radius); BuildBitmap(bitmap, Radius);
• Перед выходом из функции _tWinMain освободить память, выделенную для глобальной переменной. delete Bitmap;
5. Описать реализацию функции OnPaint следующего вида:
void OnPaint(HWND hwnd, HDC hdc) { if (bitmap == NULL) return; // Создаем контекст рисования и устанавливаем пиксельную систему координат Graphics g(hwnd); g.SetPageUnit(UnitPixel); RECT rc; GetClientRect(hwnd, &rc); // Смещаем систему координат в центр области рисования главного окна g.TranslateTransform((double)rc.right/2.0, (rc.bottom - (double)rc.top)/2.0); // Вывод построенного изображения bitmap на экран Pen pen(Color(0,0,255)); g.DrawImage(bitmap, Point(-(int)bitmap->GetWidth()/2, -(int)bitmap->GetHeight()/2)); // Крестик в центре изображения (для удобства разработки) g.DrawLine(&Pen(Color(0, 0, 0), 2.0f), -40, 0, 40, 0); g.DrawLine(&Pen(Color(0, 0, 0), 2.0f), 0, -40, 0, 40); }
6. Построить цветовую модель HSV в обработчике BuildBitmap 7. Создать обработчик сообщения WM_MOUSEMOVE (см. пример «60 SpyTheMouse») 8. Выводить параметры текущей цветовой точки в заголовок окна приложения 9. Создать обработчик сообщения WM_KEYDOWN для обработки нажатия клавиш «+», «–» 10. Скорректировать обработчик сообщения WM_PAINT так, чтобы построение изображения производилось в зависимости от коэффициента масштаба
Дата добавления: 2014-12-07; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |