Используя компонент Windows Image Component (WIC), я хочу сделать следующее для моего рабочего стола Windows (Direct2D/C++ с Windows 7 SP1 - Visual Studio 2013)
Выберите любой тип RenderTarget (Direct2D Hwnd/Bitmap/WICBitmap - и т.д.) Для рисования
Создайте пустую растровое изображение (D2D1Bitmap или IWICBitmap - в зависимости от того, что применимо)
Начните рисовать - заполните цвет, нарисуйте несколько линий и эллипсов - Конец рисунка ==> (Все в растровом изображении)
В некоторый момент времени мне нужно сохранить рисованный контент в растровом изображении в качестве изображения на моем компьютере
Поместите растровое изображение в координатах x1, y1 (верхний левый - xy) и x2, y2 (координаты вправо-вправо) объекта рендеринга. Потому что остальная часть окна будет использоваться панелью инструментов.
Как достичь этого с помощью C++/Direct2D?
GDI+ Код для моей функциональности:
Bitmap* pBmp = NULL; //create null or empty bitmap
Graphics* pGrBuf = NULL; //initialise graphics to null
pBmp = new Bitmap((INT)rectClient.Width, (INT)rectClient.Height);
pGrBuf = new Graphics(pBmp);
На этой графике я всегда мог рисовать линии, прямоугольники и т.д.
pGrBuf.DrawRectangle(....)
pGrBuf.DrawLine(...)
В конце концов, для достижения точки 5
//leave some space (30, 30 in xy co-ordinates) for putting the toolbox in the top
pGrBuf.DrawImage(m_pBmp, 30.0f, 30.0f);
Код для пункта 4 намеренно опущен.
Вопрос имеет простой, недвусмысленный ответ, но есть некоторые детали, которые вы должны (пере) рассмотреть.
Direct2D не является инфраструктурой панацеи, которая будет легко превосходить других. Это не очень понятно, каковы ваши рисунки и какова их цель, но бывают случаи, когда использование Direct2D не очень подходит. Если вы замените GDI (+) на D2D, некоторые из ваших страданий будут:
Но также преимущества, которые Direct2D может обеспечить, бесчисленны.
Грубо говоря, Direct2D - это не что иное, как обертка вокруг Direct3D. Он был представлен с DirectX 10, и его использование было очень похоже на GDI (+). Но с DirectX 11 (1), Direct2D "принципы" были изменены, и теперь его больше похоже на D3D. Он добавляет другие подходы и отбрасывает старые. Сначала это может быть немного запутанным. Сбивает с толку, потому что все учебники, статьи и любые ресурсы D2D (включая MSDN) в сети смешиваются между версиями D2D. Некоторые из них предназначены для старой версии и рекомендуют одну вещь (подход), другие описывают новую версию.
Во всяком случае, я рекомендую новую версию - то есть Direct2D 11.1.
На ваш вопрос...
Вот некоторые ресурсы, которые могут вам помочь: