C++ 用于渲染二维元素(圆、圆角矩形、模糊~)的参考

C++ 用于渲染二维元素(圆、圆角矩形、模糊~)的参考,c++,python,user-interface,rendering,2d,C++,Python,User Interface,Rendering,2d,我正在编写一个Python模块,它应该为低级GUI平台提供一个简单的OOP接口。为了实现这一点,需要创建一个包装器类,该类由模块中的类使用 这是基本实现的(尚未)类图 这个问题实际上与软件包的设计无关,但如果您对它有疑问或有更好的想法,我不会介意任何评论/批评 DrawArea类是底层平台和包中类之间的粘合剂。事件通常从这里开始,因为包装器应该识别鼠标/键盘事件并将其告知其子级 现在,如您所见,DrawArea类需要实现一些函数来将基本元素呈现到GUI上。现在,我想了解渲染圆、圆角矩形、线(具

我正在编写一个Python模块,它应该为低级GUI平台提供一个简单的OOP接口。为了实现这一点,需要创建一个包装器类,该类由模块中的类使用

这是基本实现的(尚未)类图

这个问题实际上与软件包的设计无关,但如果您对它有疑问或有更好的想法,我不会介意任何评论/批评

DrawArea类是底层平台和包中类之间的粘合剂。事件通常从这里开始,因为包装器应该识别鼠标/键盘事件并将其告知其子级

现在,如您所见,DrawArea类需要实现一些函数来将基本元素呈现到GUI上。现在,我想了解渲染圆、圆角矩形、线(具有一定厚度)以及抗锯齿背后的魔力。一个原因是我对这个主题很感兴趣,另一个原因是我想用这个包交付一个实现。(将用C/C++编写,我敢肯定Python对于这种渲染操作来说会非常慢,不是吗?)

现在我的问题是:

  • 对于如何渲染圆、椭圆、圆角矩形或线(具有一定厚度,一像素线很容易……),有什么好的参考资料吗
  • 关于如何实现抗锯齿,有什么好的参考资料吗?
    • 例如,是在渲染元素时进行抗锯齿处理,还是在所有渲染操作完成后应用抗锯齿处理
  • 使用类似于将被呈现的
    Path
    类的东西会更好吗?即,应呈现形式的矢量化表示。这将有利于渲染任何类型的二维形式,但我不知道如何实现它。有很好的矢量图形绘制参考资料吗
  • 是一个编程库,它是我最喜欢的渲染矢量图形的选择

    您可能想对它做一个包装(查看一下),查看来源或者

    在这里你可以找到很多信息如何做:“高保真2D图形-高质量渲染”。这里提到了火盆生产线和其他主题。我最喜欢的部分是关于亚像素渲染的

    如果您对如何优化绘图线、多边形等感兴趣,即使是在C+装配级别

    • 鼓励阅读既古老又伟大的书籍(展示i386时代需要的技巧):
    • 如果你想要更多,另一本书:“计算机图形学导论” 詹姆斯·D·福利、安德烈·范·达姆、史蒂文·K·费纳、约翰·F·休斯、理查德·L·菲利普斯”
    以下是众多2D计算机图形算法之一的示例:

    • 这是广泛使用的原因,它只使用整数加法,减法,位移位-这是最快的指令执行
    • 许多修改,包括多核:
    • 清晰易读的示例如何将Bresenham应用于直线、圆等:
    • 这是如何画圆的经典例子
    • 但是,如果您希望在绘图算法中内置抗锯齿功能(而不是过采样),您可能希望签出:
    • 在网上阅读有关算法的文章,但我真的鼓励大家深入研究

    这是无关紧要的,但是我可以问一下,你用什么来制作这个漂亮的类图吗?@SigTerm Diggin through source code不是黄色的,而是一个起点。在考虑抗锯齿时,我实际上还没有考虑过Qt。我的目标不是创建一个糟糕的Qt克隆。我的目标是实现不受操作系统风格限制的高度动态和可定制的用户界面。仍然是“有点”低级别,但面向对象,而不是线性渲染。我已经做了这个模块的原型,但我不相信这个设计。此外,应增加更多期货(如AA)。(请参阅上一版本的。@Niklas R:“高度动态和可定制的用户界面,不受操作系统风格的限制。”这与Qt提供的有什么不同(您看过“qtdemo”吗?)?另外,请记住,此类系统的开发/维护将占用您大量的时间,可能需要数年。@NiklasR在您询问参考资料时,我又添加了一些。我希望您喜欢它们,这将有助于您了解“boostrap”/“起点”:。用2D画画真的很有趣。我曾经在《时代周刊》386 486上为benn编程过游戏,然后对C/assembly进行了优化,这是一个必须且具有挑战性的乐趣:)。花些时间为你自己画线、圆写一些“玩具例子”。小心角落里的箱子。如果你填写得更流利,将使用所有2D渲染技术,开始构建应用程序。请记住手动奖励最佳答案,因为分数会自动飞走,或者只会给出一半的分数:;)。谢谢你漂亮的回答,格泽戈兹。这么多有用的信息和参考资料。这就是我要找的!你让我开心以防万一,你将在赏金即将到期时收到赏金。非常感谢。不客气。我希望它对您有所帮助,并且您在实现这些东西时也会很开心:)。