Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - adishy

Pages: [1]
1
Graphics / Help with Co-ordinate system
« on: January 27, 2018, 02:53:13 am »
Hello,

I am writing a small program using SFML which draws a 5 x 5 rectangle at any point specified by clicking the mouse.

I am using mapPixelToCoords() to map the mouse coordinates to the pixels as recommended in the documentation, however I am still encountering a weird offset between the coordinates and the actual shape which is drawn.
The offset varies on different parts of the window (it is not a constant x,y value).

I would like the rectangle to be drawn precisely under the mouse pointer, how do I go about removing this offset?

(I have also attached screenshots to help clarify the issue I'm encountering)

This is the code I'm using to draw the rectangle on click:
int main(){

        sf::RenderWindow window(sf::VideoMode(800, 720), "SFML window");

        sf::Event event;

        //Rectangle to be drawn on the screen
        sf::RectangleShape someRect;
        someRect.setFillColor(sf::Color(0, 0, 0));
        someRect.setSize({ 5, 5 });
        someRect.setPosition(100, 120);

        while (window.isOpen())
        {
                if (!windowStarted) {
                        event.type = sf::Event::Closed;
                }

                while (window.pollEvent(event))
                {
                        // Close window: exit
                        if (event.type == sf::Event::Closed) {
                                window.close();
                        }

                        if (event.type == sf::Event::MouseButtonPressed) {
                                someRect.setPosition(window.mapPixelToCoords(sf::Mouse::getPosition(window)));
                        }
                }

                window.clear(sf::Color(255, 255, 255));

                window.draw(someRect);

                window.display();

        }

         return 0;
}

Pages: [1]