gpt4 book ai didi

c++ - 在c++中绘制抗锯齿圆角矩形

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:31 25 4
gpt4 key购买 nike

正如标题中所写,我想在 C++ 和 Linux 上下文(ubuntu)中绘制抗锯齿圆角矩形。我已经尝试过 SDL_gfx 但抗锯齿功能在 roundedBox 形状上不可用。我还阅读了有关 SDL_Draw 的内容,但我认为它都不提供抗锯齿功能。

这就是为什么我问是否有人知道提供这种形状的框架,或者是否有人知道(轻)抗锯齿算法(我需要这个来进行实时视频处理)。

<小时/>

谢谢你,Vjo,但我真的不想在我的软件中使用 openGL ...顺便说一句,我想我找到了另一种绘制抗锯齿圆角矩形的方法!

我在第一篇文章中没有解释的是我已经在我的程序中使用了 SDL 和 opencv。所以我有一个想法:

  • 使用 SDL_gfx 绘制 1 channel 圆角矩形
  • 使用 cvSmooth 进行平滑以获得抗锯齿 alpha
  • 使用结果作为简单矩形的 Alpha channel

你对此有何看法?我今晚会尝试一下!

最佳答案

形状中唯一需要抗锯齿的部分是角。绘制四个抗锯齿的四分之一圆,每个角各一个(吴晓林的圆算法是这里的最佳选择),并用简单的线条弥合间隙。如果形状不会旋转(即所有直线都是垂直或水平的),请使用 Bresenham 的非抗锯齿直线算法,否则使用 Wu 的直线算法。Wu 的抗锯齿算法通常是最快的,并且会给出非常好的结果。

如果您确实想优化结果,并且熟悉 x86 汇编编程,我建议使用内联汇编语言编写绘图例程。经过适当调整,吴的直线算法只需 15 条指令即可编写,而他的圆形算法则约为 40-50 条指令。

关于c++ - 在c++中绘制抗锯齿圆角矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8054277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com