Читаем категорию «UIPI»

CSting -> char* Мой подарок вам

В последнее время не очень много записей, связанных с С++. Сегодня рассмотрим наиболее часто встречающуюся проблему: конвертирование CSting в char*. Облазив много форумов и прочитав огромную кучу негатива, нашел простое и элегантное решение возникшей проблемы, чем с удовольствием делюсь с читателями:

Читать полностью »

Библиотека с++ для изображений

Вот, наконец, подошло время и с++ заняться. Занятное, кстати, задание меня ждет. А главное – что? Главное – то, что оно оплачивается хорошо!

Периодически буду писать заметки “чтобы не забыть”. Сегодня пишу первую: про библиотеку работы с изображениями.

Читать полностью »

CString -> LPCWSTR

Задача на первый взгляд тривиальная, но на самом деле не всё так просто, как хотелось бы. Как и следовало ожидать, стандартные преобразования типов данных в данной ситуации не работают. Ну не понимают юникод и всё тут! А для GDI+ функций ну просто необходимы строки в юникоде. Вот такое неприятное противопоставление.

Читать полностью »

GDI+ и оператор new

Почему компилятор не дает создать объект GDI+ при помощи new?

Такое поведение возможно при попытке откомпилировать MFC-приложение с использованием GDI+ в Debug-конфигурации.

В начале файла программы, видимо, имеется следующий фрагмент:

Читать полностью »

Как нарисовать линию или прямоугольник на контексте устройства (CDC)? Как выбрать цвет и толщину линии?

Пусть имеется указатель на контекст устройства, на котором (контексте то есть) будем рисовать.

1
CDC* pDC;

Можно взять класс, производный от CDC.

[cc lang=""]CPaintDC* pDC; //

//рисуем сплошной зелёный прямоугольник
//шириной 100, высотой 300
RECT r = {0, 0, 100, 300};
pDC->FillSolidRect(&r, (0, 128, 0));
Читать полностью »

Подключаем GDI+ к Visual C++

1. скачать GDI+, допустим, отсюда
2. распаковать и прописать путь (…your_path\GDIPlus\includes ) в среде разработки
3. вставить определение нового типа данных и ссылку на заголовок в своем *., где применяется GDI+
(или в том же StdAfx.h, чтобы везде работало)

1
2
#define ULONG_PTR ULONG
#include <gdiplus .h>

Читать полностью »

Как преобразовать RGB-цвет в оттенки серого?

В приведенном примере для преобразования -цвета используются коэффициенты, принятые в телевидении:

1
2
3
byte color = RED * 0.299 + GREEN * 0.587 + BLUE * 0.114;

int GrColor = RGB (color,color,color);

Здесь переменные RED, GREEN, BLUE соответствуют цветам палитры красному, зеленому и синему соответственно.

Читать полностью »

Создание BMP из CBitmap

Эта задача программирования не настолько тривиальна, как бы этого хотелось. Сложность заключается в том, что готовых 100% работающих классов или библиотек под эту задачу лично мне найти не удалось. Пришлось немного углубиться в поиски и адаптировать то, что с большего подходит под задачу создания файла из элемента класса CBitmap.
Читать полностью »

Быстрое копирование файла C++

Как обычно: на банальные задачи времени тратится гораздо больше, чем на что-то интересное и серьезное.

Странно, почему на форумах с++ никто не указывает функцию копирования файла CopyFile? Люди советуют переписывать данные в новый файл с другим именем. А если файлы занимают несколько Гб, то что прикажете делать?

Читать полностью »

Модуль числа в C++

Вопрос примитивный, решение тоже :)

Задача: получить модуль числа с плавающей запятой

Решение оказалось банальным, хотя и потребовало некоторых усилий из-за того, что я в большей степени работаю в матлабе.

Читать полностью »