通用Windows可以动态地绘制图形和保存图像
universal windows draw graphics and save image on the fly
我正在用c++开发一个通用的Windows 10应用程序,需求是这样的-有三角形/矩形/等的规范。比如坐标,边框宽度,边框颜色等等。现在,我需要创建一个图像,这样指定的三角形就可以绘制在它上面,然后将图像保存到一个临时位置。
我尝试过第三方库,如ImageMagick,但不能使用它,因为首先我正在开发一个通用应用程序,所以它需要是跨平台的,其次,它是太大的一个库适合应用程序。
我也看了看Win2D,但它也需要一个Canvas元素放在UI上。此外,绘图需要在绘制事件处理程序中完成,但我想在飞行中做,如Image2D getTriangle(double x1, double y1, double x2, double y2, double x3, double y3, Color color)
。
-
我看了看Android应用开发,他们有一个叫"Android .graphics"的东西。可以使用的油漆。Universal Windows SDK中是否有我可以利用的东西?
-
我真的不想创建一个XAML元素。原因-它需要加载到UI之前,我可以使用它(技术上,需要去"布局通过"),我不想在屏幕上显示它-只是保存在磁盘上的图像。
-
像通用Windows一样,它应该能够在通用Windows支持的所有平台上运行,如Windows Phone, Surface, PC等
我终于找到了我的问题的解决方案,希望它能指导其他在这里绊倒的人。用于在通用Windows应用程序中动态创建图像的库仍然是Win2D。但是,当Direct2D在屏幕上写入图像时,在Win2D中有一个屏幕外绘图库,可以帮助绘制图像到文件。本质上,我们使用CanvasRenderTarget创建渲染目标,并使用CanvasDrawingSession绘制。完成后,我们使用SaveAsync将图像保存到磁盘。
Win2D也可以作为nuGet包使用,因为它是一个带有。uwp包的微软项目,它似乎可以在通用Windows目标的所有平台上运行。
示例代码-
CanvasDevice^ device = CanvasDevice::GetSharedDevice();
CanvasRenderTarget^ offscreen = ref new CanvasRenderTarget(device, width, height, 96);
{
CanvasDrawingSession^ ds = offscreen->CreateDrawingSession();
ds->Clear(Colors::Black);
ds->DrawRoundedRectangle(Rect (0, 0, 100, 100), 0, 0, Colors::White);
}
offscreen->SaveAsync(filepath)
您可能会设法将您的规范转换为xml/svg格式(如果还没有这种情况),然后渲染和保存与一些QT库:
http://doc.qt.io/qt-5/qsvgrenderer.htmlhttp://doc.qt.io/qt-5/qimage.htmlQSvgRenderer类用于绘制SVG文件的内容
QImage类提供了一个独立于硬件的图像表示
- 创建SVG xml文本与您的规范
- 或者,直接使用QPainter 绘制内容
- 将QImage保存为任意格式
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- C++图形类指针混淆
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 在C++中将类(带有Vector成员)保存为二进制文件
- C++.我想将更改后的特定字符行保存在字符串中
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 这是实现图形的坏方法吗
- 哈希文件递归并保存到矢量Cryptopp中
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 无法通过头文件保存变量的值
- 什么可以用来在 C++ 中保存图形等结构(Python pickle 等效物)
- 如何将图形保存到 bmp
- 通用Windows可以动态地绘制图形和保存图像