Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to calculate the x value of the pixel based on scale changes
Forum Updated to NodeBB v4.3 + New Features

How to calculate the x value of the pixel based on scale changes

Scheduled Pinned Locked Moved General and Desktop
8 Posts 3 Posters 4.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    JothiMurugeswaran
    wrote on last edited by
    #1

    I have a QGraphicsScene and QGraphicsView. If i am pointing a pixel at X:100;y:100 at the scale(1,1). Then, what is the x,y co-ordinates of the pixel, when there is scale(0.8,1)? Is anyway to findout the logic behind this?

    1 Reply Last reply
    0
    • W Offline
      W Offline
      warjan
      wrote on last edited by
      #2

      Did you try one of mapFromScene() function from QGraphicsView?

      Does your grass is really that greener?

      1 Reply Last reply
      0
      • F Offline
        F Offline
        favoritas37
        wrote on last edited by
        #3

        Sorry if i miss something but wouldn't it be the multiplication of the X (or Y) with its corresponding scale? So if X:100 and Y:100 with scale(1,1) wouldn't it be X': aX and Y':bY where scale(a, b)?

        That would result your requesting coordinates to be X:80, Y:100.

        Also in the above logic you have to add the offset of the view that is being scaled from the Coordinate origin.

        Isn't it?

        1 Reply Last reply
        0
        • J Offline
          J Offline
          JothiMurugeswaran
          wrote on last edited by
          #4

          Hi favoritas37, Can you please give some more detail. I tried with the logic of X’: aX and Y’:bY. But it is not working. What is the offset you mean?

          1 Reply Last reply
          0
          • F Offline
            F Offline
            favoritas37
            wrote on last edited by
            #5

            I need one clarification.

            You have your image and you point with the mouse at X,Y. Then you keep the mouse to the same place but the image is scaled to (0.8,1). Now you point again at X,Y but you want to find which would be the coordinates of the image's pixel if it was not scaled?

            In this case you use the following: X' = X/a, Y'=Y/b

            The offset that i was talking about is in case the image is not printed at (X,Y)= (0,0) of the parent widget. So lets call that the image gets printed at position (x,y)=(c,d) where c and d are a random number. Then the above function for X' and Y' would look like this:

            X' = ((X-c)/a + c ), Y' = ((Y-d)/b + d)

            Any way, probably the first without the offset will be fine.

            1 Reply Last reply
            0
            • J Offline
              J Offline
              JothiMurugeswaran
              wrote on last edited by
              #6

              I will explain the actual scenario in detail below:

              I have a QGraphicsScene and QGraphicsView. Both objects has the width of 600. Now when i place a drawing on the QGraphicsScene, the width (itemsBoundingRect()) of the QGraphicsScene is increasedto 1400. In this case, i will show a manual Horizontal scroll bar used in viewing the image by scrolling.

              For this, i wrote the below logic:

              QRectF sceneRect = plotScene->itemsBoundingRect();
              plotScene->setSceneRect((value * ((sceneRect.width())/100)),0,600 ,350);

              The above logic is working fine, when it is Scale(1,1). But When i changed the Scale level, the scroll operation not working as expected. This is the actual problem.

              Note: For some reasons i am using the separate scroll bar and not the automatic one coming with QGraphicsView/Scene.

              1 Reply Last reply
              0
              • F Offline
                F Offline
                favoritas37
                wrote on last edited by
                #7

                I still have a small problem trying to correlate your first question with your actual problem.

                The value variable i will suppose that is used with the division to 100 to create a percentage for the scaling factor?

                Why are you changing the X position of the plotScene? If you scale something normally you would change the width/height, not the x,y position of its.

                So ok, the scrollbar doesn't work as expected, but i don't get which is the expected case.

                Also have you looked warjan's suggestion about "mapFromScene()":http://qt-project.org/doc/qt-4.8/qgraphicsview.html#mapFromScene?

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  JothiMurugeswaran
                  wrote on last edited by
                  #8

                  The Value variable holds the position of the scroll bar. It varies from 0 to 99. The below code is present inside the HScrollbar value change event:

                  QRectF sceneRect = plotScene->itemsBoundingRect();
                  plotScene->setSceneRect((value * ((sceneRect.width())/100)),0,600 ,350);

                  If the ScrollBar position is 0, then the QGraphicsView should hold the QGraphicsScene data from
                  the left edge of the GraphicsScene to the width of the view area.
                  If the ScrollBar position is 99, then the QGraphicsView should hold the QGraphicsScene data from the right edge of the GraphicsScene to the width of the view area.

                  Same kind of behavior, i am expecting for all scale levels. But it is not happening.

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved