Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?
Пусть имеется указатель на контекст устройства, на котором (контексте то есть) будем рисовать.
1 | CDC* pDC; |
Можно взять класс, производный от CDC.
[cc lang="cpp"]CPaintDC* pDC; //
//рисуем сплошной зелёный прямоугольник
//шириной 100, высотой 300
RECT r = {0, 0, 100, 300};
pDC->FillSolidRect(&r, RGB(0, 128, 0));
далее
Подключаем GDI+ к Visual C++
1. скачать GDI+, допустим, отсюда
2. распаковать и прописать путь (…your_path\GDIPlus\includes ) в среде разработки
3. вставить определение нового типа данных и ссылку на заголовок в своем *.cpp, где применяется GDI+
(или в том же StdAfx.h, чтобы везде работало)
1 2 | #define ULONG_PTR ULONG #include <gdiplus .h> |
Как преобразовать RGB-цвет в оттенки серого?
В приведенном примере для преобразования RGB-цвета используются коэффициенты, принятые в телевидении:
1 2 3 | byte color = RED * 0.299 + GREEN * 0.587 + BLUE * 0.114; int GrColor = RGB (color,color,color); |
Здесь переменные RED, GREEN, BLUE соответствуют цветам палитры RGB красному, зеленому и синему соответственно.
Создание BMP из CBitmap
Эта задача программирования не настолько тривиальна, как бы этого хотелось. Сложность заключается в том, что готовых 100% работающих классов или библиотек под эту задачу лично мне найти не удалось. Пришлось немного углубиться в поиски и адаптировать то, что с большего подходит под задачу создания BMP файла из элемента класса CBitmap.
далее
Быстрое копирование файла C++
Как обычно: на банальные задачи времени тратится гораздо больше, чем на что-то интересное и серьезное.
Странно, почему на форумах с++ никто не указывает функцию копирования файла CopyFile? Люди советуют переписывать данные в новый файл с другим именем. А если файлы занимают несколько Гб, то что прикажете делать?
