c++绘图框架

总体对比表格

框架总体评价主要特点备注
QT最新的C++开源框架,封装了图形QGraphics的常用操作,便于扩展。开源,免费,跨平台
MFC不便于扩展和维护,CDC画图功能齐全经典的框架,已不再更新
SLMF适合简单的图形绘制,支持旋转,平移等功能,适用于小游戏开发
skia完整的2D图形库,可绘制文本,几何图形和图像
Cairo完整的2D图形库,包含了 编辑、移动、缩放、路径合并 等功能

c++绘图框架

QGraphics 【重点推荐】

QT ,包含了 视图转换 工具,封装了图形的常用操作,便于扩展。

  • 项坐标: 围绕它们的中心点(0,0) 左右变换 也是按这个进行的。 父坐标 场景坐标: Scene 为所有的项 提供了基本的坐标系统。
  • 每个项都有一个场景坐标绑定的 视图坐标: View 坐标,窗口部件的坐标。 每个坐标对应1个像素。 左顶角永远是 (0,0),右底脚 总是
  • (视宽, 视高)。所有鼠标事件 和 缩放事件 都是以视窗坐标收到的,需要将这些转换成 场景坐标,以方便和项进行交互。

https://www.bogotobogo.com/Qt/Qt5_QGraphicsView_QGraphicsScene.php
介绍 QGraphicsScene 和 QGraphics
在这里插入图片描述

SLMF

不适合做应用程序,有黑框的出现
比较适合做小游戏。
在这里插入图片描述

启动

VS2012

Visual C ++ 12(2013)-32位

D:\tools\SFML-2.5.1\include
D:\tools\SFML-2.5.1\lib

附加依赖的库
sfml-graphics.lib;sfml-window.lib;sfml-system.lib;

拷贝 D:\tools\SFML-2.5.1\bin 目录下,所有的 dll 到 Debug 目录下, 运行结果如下:

添加静态库, 不可以。没包含 opengl 的库
sfml-graphics-s-d.lib;sfml-window-s-d.lib;sfml-system-s-d.lib;

SFML_STATIC;

设定桌面窗口

sfml mfc
建议用 .net 来做

sfml gui

http://lalaland.github.io/gtkGuide.html

可以集成一块画图区域,但不能使用 sf::Event

GTK+: 用于创建图形用户界面的跨平台工具包

sfml sf::view

https://github.com/SFML/SFML/wiki/Tutorial%3A-Using-View

sf::VideoMode

有视图,以后代码

视图由一个源矩形和一个目标视口组成,该源矩形定义了2D场景的显示部分.该目标视口定义了源矩形的内容将在渲染目标(窗口或纹理)上显示的位置

视口允许将场景映射到渲染目标的自定义部分,并且可以用于例如分屏显示或显示小地图。

我们还拥有世界坐标系,尽管不是“物理上”,即您用于绘制子画面等的坐标。

,因此sf::View坐标系的原点始终位于窗口的中心

,view.zoom(0.5f)但是从程序员的角度来看,这是完全不同的。正如我们将在下一段中学习的那样,我们可以使用视口将渲染部件映射到窗口上的特定区域。现在,如果我们以与以前相同的大小应用场景,则如果侧面的比例不再相同,所有内容将缩小并最终拉伸。这可以创建一些想要的效果,但大多数情况下不会。通过设置一个特定的大小,我们告诉sf::View视图应该绘制多大,而不在渲染部件上进行任何可见的变换。

sf::Vector2f v1(16.5f, 24.f);

是否具有扩展性

【由于只有游戏相关的 功能,舍弃 gfml 功能】

资料

用C++和SFML写游戏-SFML介绍(1)
https://blog.csdn.net/qq_33567644/article/details/91126507

SFML从入门到放弃(1) 窗口和交互
https://www.cnblogs.com/karl07/p/10285692.html

skia

Skia是一个完整的2D图形库,可绘制文本,几何图形和图像。
https://github.com/google/skia

Skia是一个开源2D图形库,它提供可在各种硬件和软件平台上工作的通用API。它用作Google Chrome和Chrome OS,Android,Flutter,Mozilla Firefox和Firefox OS以及许多其他产品的图形引擎。

magnum

图形处理软件

打印和编辑功能

https://github.com/mosra/magnum

https://magnum.graphics/

Cairo

https://www.cairographics.org/FAQ/

C 程序
包含,直线,弧线,曲线,封闭道路的 接口

移动功能

https://gitlab.com/cairo/cairo-demos
D:\exercise\cairo-demos\path_paint
包含了 编辑、移动、缩放、路径合并 等功能

#include <gtk/gtk.h>
#include <cairo.h>
#include <math.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>


采用 makefile 进行编译



https://www.gtk.org/docs/apis/

https://www.cairographics.org/samples/

主要就是画线,画文字 的 图形示例, 有图片介绍。

https://www.cairographics.org/examples/

矢量图形 抗锯齿
https://www.cairographics.org/xr_ols2003/html/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值