是否像在 MFC 中那样在 nana c++ 中的画布上涂鸦的图形支持?

Posted

技术标签:

【中文标题】是否像在 MFC 中那样在 nana c++ 中的画布上涂鸦的图形支持?【英文标题】:Is there graphical support for scribbling on a canvas in the nana c++ as in MFC? 【发布时间】:2015-03-18 22:06:10 【问题描述】:

我有一个用 VC6 的 MFC 编写的旧图形应用程序,我正在尝试迁移到更符合标准的 C++ 框架。我查看了 nana 项目 here 的文档,试图找到一个基本示例,用于在类似于 Visual C++ 附带的旧 scribble MDI drawing example 的类似画布的小部件上涂鸦。

我读到 nana 是一个新的有前途的 c++ GUI 平台,我想知道它是否适合一般的 GUI 编程。然而,查看 nana 文档,只有按钮、列表框等示例。我找不到任何关于图形功能的提及,例如在画布(或内存中的位图)上绘图,这些功能在 MFC 或 wxWidgets 等其他 GUI 库中很常见。

有谁知道 nana 项目是否可以支持图形操作,例如 VC++ scribble 示例的底层操作?更具体地说,MS Visual Studio 的示例文件夹中的涂鸦示例演示了徒手绘制曲线以响应鼠标事件、存储曲线并在视口进行缩放和平移时刷新客户区域(即处理逻辑与图像/像素坐标系)。这些是我一直在寻找的图形 API 支持。

谢谢。

【问题讨论】:

我的问题是想问在特定的c++库中是否有特定的函数(在canvas上绘图),这个很常见也很重要。我展示了我到目前为止搜索的内容。我不认为这只是要求提供一些知名功能的教程或请求库。 【参考方案1】:

我在 MS 上找不到示例,我不确定您需要什么。你可以试试这个链接:

在文档:drawing wrapper 或hier,设置绘图功能。

在 doxy-docs:drawing

绘图函数可以使用:graphics

这边:

#include <nana/gui/wvl.hpp>

int main()

    using namespace nana;

    form fm;
    drawing dw(fm);
    dw.draw([](paint::graphics& graph)
    
        graph.rectangle(rectangle5, 5, 50, 50, true, colors::red );
        graph.line(point(5, 5), point(55, 55), colors::white);
    );

    dw.update();
    fm.show();
    ::nana::exec();

希望对你有帮助

【讨论】:

+1。谢谢。这是沿着我正在寻找的方向。 MS Visual Studio 在其示例文件夹中有一个涂鸦示例。它展示了如何响应鼠标事件而徒手绘制曲线、存储曲线以及在视口进行缩放和平移时刷新客户区(即处理逻辑坐标系与像素坐标系)。这些是我一直在寻找的 API。 paint::graphics 只是提供了有限的绘图功能,但是通过使用 GDI+,您将获得丰富的绘图功能,请参阅FAQ

以上是关于是否像在 MFC 中那样在 nana c++ 中的画布上涂鸦的图形支持?的主要内容,如果未能解决你的问题,请参考以下文章

C# 或 C++ ;可以像在 CE 中那样修改内存吗? [关闭]

Nana 用 C++ 制作 GUI

用VC写了一个文本编辑器,怎样将输入里面的关键字变色实现高亮状态,就像在VC里面写代码输入C++关键字那样

MFC 中的更新数据

在 nana C++ GUI 应用程序中设置窗口图标

此 Nana 演示代码中使用的 C++ 功能是啥?