Форум программистов, компьютерный форум, киберфорум
Наши страницы
SFML
Войти
Регистрация
Восстановить пароль
 
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
1

SFML window растягивает содержимое

13.04.2014, 16:37. Просмотров 391. Ответов 0
Метки нет (Все метки)

Собственно, не проблема, а вопрос.
Создаю средствами SFML форму, рисую в центре круг, растягиваю форму, но круг тоже растягивается... И это уже не круг...
Код проекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <SFML/Graphics.hpp>;
#include <Box2D/Box2D.h>;
#include <iostream>;
#include <string>;
 
#include "Star.h";
 
using namespace sf;
using namespace std;
 
int main()
{
    ContextSettings settings;
    settings.antialiasingLevel = 8;
    RenderWindow window(VideoMode(1024, 768), "SPACE", Style::Default, settings);
 
    //VARS-----------------------------------------------------------
      //Classes:
        Star Star1;
      //SFML:
        Clock clock;
        float X1 = window.getSize().x;
        float Y1 = window.getSize().y;
        float X = window.getSize().x;
        float Y = window.getSize().y;
      //Other:
        int time = 0;
        bool Timer = false;
    //VARS-----------------------------------------------------------
 
        Star1.SetPosition(X / 2 - Star1.GetRadius(), Y / 2 - Star1.GetRadius());
    while (window.isOpen())
    {
        Event event;
        Time elapsed1 = clock.getElapsedTime();
        if (time != (int)elapsed1.asSeconds() && Timer == true)
        {
            time = (int)elapsed1.asSeconds();
            cout << time << " seconds of working program" << endl;
        }
        while (window.pollEvent(event))
        {
            switch (event.type)
            {
                case Event::Closed:
                {
                    window.close();
                    return(0); //Exit by user
                    break;
                }
                case Event::KeyPressed:
                {
                    break;
                }
                case Event::Resized:
                {
                    X = window.getSize().x;
                    Y = window.getSize().y;
                    X1 = X;
                    Y1 = Y;
                    cout << "The window has been resized to" << endl;
                    cout << "X: " << X << endl;
                    cout << "Y: " << Y << endl;
                    Star1.SetPosition(X / 2 - Star1.GetRadius(), Y / 2 - Star1.GetRadius());
                    break;
                }
                default:
                {
                    break;
                }
            }
        }
        window.clear(Color::Black);
        window.draw(Star1.GetShape());
        window.display();
    }
    return 0;
}
Код класса Star:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#pragma once
#include <SFML/Graphics.hpp>;
#include <Box2D/Box2D.h>;
#include <iostream>;
#include <string>;
 
using namespace sf;
using namespace std;
 
class Star
{
public:
    Star()
    {
 
    }
    ~Star()
    {
 
    }
    CircleShape GetShape()
    {
        shape.setFillColor(Colour);
        shape.setRadius(R);
        return(shape);
    }
    void SetPosition(int x, int y)
    {
        X = x;
        Y = y;
        shape.setPosition(x, y);
    }
    Vector2u GetPosition()
    {
        Vector2u Pos;
        Pos.x = X;
        Pos.y = Y;
        return(Pos);
    }
    void SetRadius(int r)
    {
        R = r;
        shape.setRadius(r);
    }
    int GetRadius()
    {
        return(R);
    }
private:
    CircleShape shape;
    Color Colour = Color::Yellow;
    int X, Y;
    int R = 100;
};
Скрин до растягивания
Скрин после растягивания
Потом на событие изменения размера окна добавил такой код:
C++
1
2
3
4
Star1.Resize(X1 / X, Y1 / Y);
window.clear(Color::Black);
window.draw(Star1.GetShape());
window.display();
А в класс Star такой:
C++
1
2
3
4
5
6
7
void Resize(float DX, float DY)
{
    Vector2f Scal;
    Scal.x = shape.getScale().x * DX;
    Scal.y = shape.getScale().y * DY;
    shape.setScale(Scal);
}
В итоге я просто растягивал круг в другую сторону.
Скрин
Однако, оказалось, что и сама система координат растягивается, а её-то обратно никак не "затянуть"
Теперь, сам вопрос: можно ли это как-то исправить в корне? Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 16:37
Ответы с готовыми решениями:

При распаковке SFML жалуется на одинаковые файлы Window.hpp
При попытке распаковать библиотеки SFML, находящиеся в ZIP архиве, жалуется на одинаковые файлы...

Почему в окне SFML не отображается содержимое?
Здравствуйте. Пытаюсь написать приложение на SFML, и возникла проблема. Когда я создаю окно, оно...

SFML в C::B пытается что-то найти в D:\sfml-release\ которого нет
Добрый день, вторые сутки пытаюсь подключить SFML библиотеку к C::B. При подключении по мануалу с...

Создание релиза exe файла SFML C++ на VS 2017 (не удается открыть входной файл "sfml-graphics-s.lib")
не могу собрать решение релиз версии, не пойму что я делаю не так постоянно выдает ошибку 1&gt;LINK...

С++ и SFML
Всем доброго времени суток!Я использую граф.библиотеку SFML. Хотел бы у вас поинтересоваться,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 16:37

Qt + SFML
Подключил библиотеку SFML к Qt, но при компиляции выдает ошибки: (Файл .pro и список ошибок) ...

Qt + SFML
Вообщем скачал сорсы sfml собрал их cmake'om (в этот адресс &quot;F:\sfmllib\build&quot;) все собралось без...

библиотека SFML
#include &quot;stdafx.h&quot; #include &lt;SFML/Graphics.hpp&gt; #define Box_X 400 #define Box_Y 400 #define...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru