2011-11-08 188 views
-1

正如在標題中所寫的,我想在C++和linux上下文(ubuntu)中繪製反鋸齒圓角矩形。我已經嘗試過SDL_gfx,但是圓角框形狀上沒有抗鋸齒功能。我也讀了SDL_Draw,但我認爲它沒有提供反鋸齒。這就是爲什麼我問是否有人知道提供這種形狀的框架,或者如果有人知道(光)抗鋸齒算法(我需要這個實時視頻處理)。在C++中繪製一個反鋸齒的圓角矩形


謝謝Vjo,但我真的不希望在我的軟使用OpenGL ...順便說一下,我想我找到了另一種方式來繪製反鋸齒圓角矩形!

我在第一篇文章中沒有解釋的是,我已經在我的程序中使用了SDL和opencv。所以我有一個想法:

  • 繪製1路圓角矩形SDL_gfx
  • 與cvSmooth平滑它來獲得抗鋸齒阿爾法
  • 使用結果作爲一個簡單的矩形的alpha通道

您對此有何看法?我今天晚上試試吧!

+0

它的工作,但仍然有點難看。 – rkohser

回答

0

需要抗鋸齒的形狀的唯一部分是角落。畫出四個反鋸齒四角圈,每個角落一圈(吳小林的圈子算法在這裏是你最好的選擇),並用簡單的線條填補空白。如果形狀不旋轉(即所有直線都是垂直或水平的,請使用Bresenham的非反鋸齒線算法,否則使用Wu的線算法.Wu的反鋸齒算法通常是最快的並且給出非常好的結果。

如果你真的想優化你的結果,並熟悉x86彙編編程,我建議你用內聯彙編語言編寫繪圖程序,經過適當調整,wu的線算法可以用15條指令編寫,他的圓算法大約40-50指令