Jump to content

View more

Image of the Day

The night is still, but the invasion brings chaos. #screenshotsaturday #hanako #indiegame #gameart #ue4 #samurai https://t.co/cgILXuokoS
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

How to obtain pixel X and Y position after panning the bitmap around on the screen?

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
5 replies to this topic

#1 asperatology   Members   

693
Like
0Likes
Like

Posted 15 April 2014 - 05:46 AM

I know that you can get the pixel's position with the following algorithm:

 

y * bitmapWidth + x = pixel position (x, y)

 

When you pan the bitmap around, I thought you can get the pixel's position by adding the delta differences X, and Y to the original pixel's X and Y position. I later found out this isn't correct. What if I panned the bitmap to the negative X and negative Y axes?

 

So, I'm kind of stuck here. Anyone knows how to solve this?



#2 Buckeye   GDNet+   

10743
Like
0Likes
Like

Posted 15 April 2014 - 06:32 AM

It's not clear what you mean by "panning" a bitmap. Can you provide a more complete description of what you're doing?

 

Are you trying to determine the pixel's position on the screen, or the position within the bitmap?


Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.


#3 asperatology   Members   

693
Like
0Likes
Like

Posted 15 April 2014 - 09:10 AM

It's not clear what you mean by "panning" a bitmap. Can you provide a more complete description of what you're doing?
 
Are you trying to determine the pixel's position on the screen, or the position within the bitmap?


The latter: Position within the bitmap using the screen mouse coordinates.

In the editor, the origins is at the top left corner of the drawing area. In the drawing area, there exists a bitmap (a white Canvas, similar to what you will see when you run MS Paint the first time) that is smaller than the drawing area. I can pan (or move) the bitmap around with a Hands tool (similar to Adobe Photoshop's Hand tool, where it moves the entire Canvas to where you wanted to move to). But even when you are panning/moving the bitmap, the origins is still at the top left corner of the drawing area. In other words, the drawing area's X and Y coordinates are not affected by how much you pan/move the bitmap around inside.

Now, I wanted to calculate the position of a pixel within the bitmap, not the position of a pixel on the screen. Now, how do I obtain the position of an arbitrary pixel within the bitmap after the bitmap has been panned/moved around in the drawing area?

Hope this is clear enough.

#4 Buckeye   GDNet+   

10743
Like
0Likes
Like

Posted 15 April 2014 - 10:20 AM

If I understand correctly, you know the position of the upper-left corner of the bitmap relative to the drawing area. Given the mouse position relative to the drawing area, the position of the mouse coordinates relative to the bitmap are:

 

mx = mouseX - bitmap_upr_left.x

my = mouseY - bitmap_upr_left.y

 

You don't mention what OS you're using,  but make sure you have both bitmap position and mouse position relative to the same area. You mentioned screen mouse coordinates - be sure to convert that position to the drawing area. In Windows, for instance, if the drawing area is the client area of the window, use ScreenToClient( hwnd, &mousePt) before you do the calcs.

 

FYI: "panning" is more commonly understood to be a change in position of the viewpoint, not the position of what's being viewed.


Edited by Buckeye, 15 April 2014 - 10:31 AM.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.


#5 ferrous   Members   

6034
Like
0Likes
Like

Posted 15 April 2014 - 11:17 AM

I know that you can get the pixel's position with the following algorithm:

y * bitmapWidth + x = pixel position (x, y)

When you pan the bitmap around, I thought you can get the pixel's position by adding the delta differences X, and Y to the original pixel's X and Y position. I later found out this isn't correct. What if I panned the bitmap to the negative X and negative Y axes?

 

So, I'm kind of stuck here. Anyone knows how to solve this?

 

y * bitmapWidth + x, breaks down if you pass in negative values, you would need to keep x and y separate, and cap either one if they hit less than 0.  Or do something else when you hit negative values, like wrap or return a set color, clamp to the border color, etc.



#6 asperatology   Members   

693
Like
0Likes
Like

Posted 15 April 2014 - 04:05 PM

Okay, I'll report back my findings after tweaking my algorithm. This post will be edited at a later time.




Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.