首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SFML中绘制凸形图形时的奇怪行为

在SFML中绘制凸形图形时的奇怪行为
EN

Stack Overflow用户
提问于 2016-09-14 16:54:49
回答 1查看 539关注 0票数 1

我正在使用SFML库绘制一个凸形图形:

代码语言:javascript
复制
#include <SFML/Graphics.hpp>

using namespace sf;

int main()
{
  RenderWindow window(VideoMode(400, 400), "SFML window");

  ConvexShape convex;

  convex.setPointCount(8);
  convex.setPoint(0, sf::Vector2f(0, 0));
  convex.setPoint(1, sf::Vector2f(180, 0));
  convex.setPoint(2, sf::Vector2f(180, 90));
  convex.setPoint(3, sf::Vector2f(100, 90));
  convex.setPoint(4, sf::Vector2f(100, 180));
  convex.setPoint(5, sf::Vector2f(30, 180));
  convex.setPoint(6, sf::Vector2f(30, 90));
  convex.setPoint(7, sf::Vector2f(0, 90));
  convex.setPosition(100, 100);

  while (window.isOpen())
  {
    sf::Event event;
    while (window.pollEvent(event))
    {
      if (event.type == sf::Event::Closed)
        window.close();
    }
    window.clear();
    window.draw(convex);
    window.display();
  }
  return EXIT_SUCCESS;
}

这些点是按顺时针顺序定义的,一切都很好!convex1

但是,当我稍微改变两个坐标时,我得到了一些我真的没有预料到的东西:

代码语言:javascript
复制
#include <SFML/Graphics.hpp>

using namespace sf;

int main()
{
  RenderWindow window(VideoMode(400, 400), "SFML window");

  ConvexShape convex;

  convex.setPointCount(8);
  convex.setPoint(0, sf::Vector2f(0, 0));
  convex.setPoint(1, sf::Vector2f(180, 0));
  convex.setPoint(2, sf::Vector2f(180, 90));
  convex.setPoint(3, sf::Vector2f(100, 90));
  convex.setPoint(4, sf::Vector2f(100, 200));   // CHANGED 180 to 200
  convex.setPoint(5, sf::Vector2f(30, 200));    // CHANGED 180 to 200
  convex.setPoint(6, sf::Vector2f(30, 90));
  convex.setPoint(7, sf::Vector2f(0, 90));
  convex.setPosition(50, 50);

  while (window.isOpen())
  {
    sf::Event event;
    while (window.pollEvent(event))
    {
      if (event.type == sf::Event::Closed)
        window.close();
    }
    window.clear();
    window.draw(convex);
    window.display();
  }
  return EXIT_SUCCESS;
}

我看到了以下窗口:convex2

为什么会出现这种情况?

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 05:12:48

这些坐标与凸形中的点相关,您应该只使用这些坐标来更改对象的格式。为了移动整个对象,您应该使用以下命令:

代码语言:javascript
复制
convex.move(x Position, y Position);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39486317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档