2016-05-28 94 views
0

如何繪製不同的形狀(除了矩形和線條)並在C++中使用SDL2填充它們?我嘗試過使用SDL2_gfx,但我無法獲得SDL2_gfx編譯,所以我沒試過。我發現了一個已編譯的SDL_gfx,但由於我使用渲染器而不是曲面,所以無法使用它。繪製多邊形很簡單,我可以計算點和繪製線條,但是如何填充它們?我如何繪製圓圈?SDL2繪製和填充形狀

如果任何人有編譯好的SDL2_gfx(和SDL2_ttf和SDL2_image一樣),那麼也許你可以把它發給我?

謝謝你的幫助:)!

+0

你說SDL2_gfx的編譯版本不適合你。你爲什麼認爲如果別人編譯它,它會起作用? – HolyBlackCat

+0

我說我無法編譯SDL2_gfx。這意味着我無法嘗試SDL2_gfx。但是,謝謝我將修復我的帖子,因爲它似乎有點太模糊 –

+0

要[畫一個圓圈](https://en.wikipedia.org/wiki/Midpoint_circle_algorithm)。爲了填充形狀,每像素可以做到這一點,但效率非常低。您最好花時間編譯SDL2_gfx並獲得錯誤幫助。 – coyotte508

回答

0

如果你想填補一個多邊形快速谷歌搜索給出了一個有效的算法here。或者,您可以複製SDL2_gfx這樣做的方式,因爲您可以訪問源代碼?

對於畫一個圓圈,有the Midpoint Circle algorithm甚至給出了一些代碼:

void DrawCircle(int x0, int y0, int radius) 
{ 
    int x = 0, y = radius; 
    int dp = 1 - radius; 
    do 
    { 
     if (dp < 0) 
      dp = dp + 2 * (++x) + 3; 
     else 
      dp = dp + 2 * (++x) - 2 * (--y) + 5; 

     putpixel(x0 + x, y0 + y, 15);  //For the 8 octants 
     putpixel(x0 - x, y0 + y, 15); 
     putpixel(x0 + x, y0 - y, 15); 
     putpixel(x0 - x, y0 - y, 15); 
     putpixel(x0 + y, y0 + x, 15); 
     putpixel(x0 - y, y0 + x, 15); 
     putpixel(x0 + y, y0 - x, 15); 
     putpixel(x0 - y, y0 - x, 15); 

    } while (x < y); 
} 

但真正做的是尋求幫助解決編制SDL2_gfx的問題。最糟糕的是,你不能直接把SDL2_gfx的源文件直接放到你的項目中嗎?只有四個文件可放入項目的子文件夾中。

+0

我可能會把源文件放在我的項目下。而且所有的SDL2源代碼我都是開源的,所以我將在SDL或SDL-gfx的主頁上發佈,或者您可以在那裏找到源代碼,您可以查看代碼。爲了好奇,我研究了SDL2填充矩形函數,但最後我不明白髮生了什麼。我迷失在彙編部分和大量宏之間的某處。 –