渲染二维元素的参考(圆形,圆角矩形,模糊〜)

时间:2012-01-18 18:43:36

标签: c++ python user-interface rendering 2d

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

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

class diagram

这个问题实际上并不是关于包的设计,但是如果你对它有疑问或者想知道什么可能更好,我不会介意任何评论/评论。

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

现在,正如您所看到的, DrawArea 类需要实现一些函数来将基本元素呈现到GUI上。现在,我想了解渲染圆,圆角矩形,线条(厚度)和抗锯齿背后的魔力。其中一个原因是我只是对这个主题感兴趣,另一个原因是我想用这个包提供一个实现。 (将用C / C ++编写,我很确定Python对于这样的渲染操作会很慢,不是吗?)

现在我的问题

  1. 对于如何渲染圆形,椭圆形,圆角矩形或线条(有一个厚度,一个像素线很容易......)有什么好的参考吗?
  2. 对于如何实现抗锯齿有什么好的参考吗?
    • 例如,渲染元素时是否进行了抗锯齿处理,或者在完成所有渲染操作后应用了抗锯齿?
  3. 使用像Path类这样会被渲染的东西会更好吗?即应呈现的表单的矢量化表示。这将有利于呈现任何类型的二维形式,但我不知道如何实现它。渲染矢量图形有很好的参考吗?

1 个答案:

答案 0 :(得分:5)

Anti-Grain Geometry - High Fidelity 2D Graphics - A High Quality Rendering Engine for C++是一个编程库,这是我最喜欢的渲染矢量图形的选择。

您可能希望制作包装(请查看documentation),查看来源或...

Jump to Research section您可以在其中找到大量有关如何操作的信息:“高保真2D图形 - 高质量渲染”。那里提到了火盆线和其他主题。我最喜欢的部分是关于子像素渲染的"Texts Rasterization Exposures"

如果您有兴趣如何优化绘图线,多边形等,即使在C +汇编级别,

这里是许多2D计算机图形算法之一的例子: