2015-01-05 43 views
3

該代碼不在SFML站點上的教程中。當我編譯並運行它時,圓形按比例縮放,因爲窗口由用戶縮放。我希望圈子保持不變的形狀。SFML 2.X中的窗口按比例調整窗口大小的形狀.X

當屏幕重新調整大小時,正確的屏幕尺寸和正確的圓弧半徑將被打印到控制檯,但圓圈繪製到屏幕的方式絕對不是它聲稱的。圓形不以任何方式在視覺上扭曲,但看起來好像是用不同的值集合來繪製到控制檯上。

antialiasingLevel對形狀的黎明沒有任何影響,如果有幫助的話。

#include <iostream> 
#include <SFML/Graphics.hpp> 

int main() 
{ 
    sf::ContextSettings settings; 
    settings.antialiasingLevel = 8; 

    sf::RenderWindow window(sf::VideoMode(200, 200), "Title", sf::Style::Default, settings); 
    sf::CircleShape shape(100); 
    shape.setFillColor(sf::Color::Green); 

    while (window.isOpen()) 
    { 
     sf::Event event; 
     while (window.pollEvent(event)) 
     { 
      if (event.type == sf::Event::Closed) 
       window.close(); 
      else if (event.type == sf::Event::Resized) 
      { 
       std::cout << "resize: (" << event.size.width << ',' << event.size.height << ") -> " << shape.getRadius() << std::endl; 
      } 
     } 

     window.clear(); 
     window.draw(shape); 
     window.display(); 
    } 

    return 0; 
} 
+0

本教程包含以下內容:[調整大小的事件](http://www.sfml-dev.org/tutorials/2.2/window-events.php#the-resized-event)和[當窗口顯示更多調整大小(http://www.sfml-dev.org/tutorials/2.2/graphics-view.php#showing-more-when-the-window-is-resized) – Hiura

回答

5

在調整大小的事件中添加以下行將糾正該問題。

window.setView(sf::View(sf::FloatRect(0, 0, event.size.width, event.size.height))); 

該問題似乎是視圖不會自動縮放以適應新的分辨率。