[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] How to control the physical size of displayed objects?



On Wed, Feb 27, 2013 at 07:51:57AM -0800, James Paige wrote:
> On Wed, Feb 27, 2013 at 04:08:08PM +0100, Mathieu Dubois wrote:
> > Hello,
> >
> > I'm working on a program (written by someone else) to use PyGame to  
> > display some images for use in a psychological experiment. I am new to  
> > PyGame.
> >
> > For the experiment we need to display circles of a given physical size  
> > (let's that the diameter must be 30mm). Currently the program seems to  
> > do the conversion with a hardcoded value.
> >
> > I wanted to know if it possible to compute this value automatically.
> >
> > If I understand correctly, I need to know the physical size of the  
> > screen and the resolution. Knowing the resolution is simple with PyGame  
> > but how can I access the screen size?
> >
> > The program should be multi-platform.
> >
> > Any advice?
> >
> > Thanks in advance,
> > Mathieu
> 
> Sadly, I believe this is nearly impossible to do in a reliable an 
> automated way. This is not just for pygame, but any program.
> 
> If you need to support monitors that connect with a VGA cable, then I 
> believe it is completely impossible. (if someone knows otherwise, please 
> correct me!)
> 
> If the monitor is identified by the operating system, you can get the 
> DPI, but this information can't be trusted. DPI settings are seldom 
> guaranteed to be accurate. They might be correct, they might be 
> incorrect, they might be intentionally misconfigured to manipulate font 
> sizes, or other such ridiculous things.
> 
> If you want something simple and cross-platform, I would suggest 
> displaying a calibration screen where you can hold a physical ruler up 
> to the screen while spinning the mouse wheel until the on-screen ruler 
> matches the physical ruler, and then save that constant in a config 
> file, or something like that.
> 
> (Again, if anybody knows any tricks to do this automatically, please 
> speak up and correct me, but I will be shocked if there is a 
> single cross-platform way)
> 

Oh, one more thought! This question got me curious, and after some 
googling, I saw a nifty suggestion on stackoverflow. In addition to 
displaying a ruler, your calibration screen could also display photos of 
some common coins, since whoever is doing the calibration might have an 
easier time locating a coin than locating a ruler.

---
James