PDA

View Full Version : automatic scaling


rlh001
06-10-2012, 07:35 AM
I am applying a picture to a textQuad. When I click the window to full screen the picture distorts. I would like to find a way to have the picture retain the same aspect ratio regardless of window size. Thanks

farshizzo
06-11-2012, 05:10 PM
Can you post the code you are using to create the tex quad?

rlh001
06-13-2012, 05:25 AM
The Vizard window opens at 800 x 600 pixels and the image looks proportioned properly. When I Maximize the window the image is distorted unless I change the scaling with the code below, but then it distorts the image when the window is not maximized. I need to have the image appear undistorted regardless of window sizing. Thanks

##Add Instrument Cluster Image to Screen
clusterTex = viz.addTexture('resources\ClusterGraphics.png')
clusterQuad = viz.addTexQuad(viz.SCREEN)
clusterQuad.texture(clusterTex)
# Increase size of image
clusterScale = 2.75
#Modify Aspect ratio to look correct when changed to full screen
clusterAspectRatio= 1.75 # full screen 1280:800
clusterQuad.setScale(clusterScale * clusterAspectRatio, clusterScale )

farshizzo
06-14-2012, 12:34 PM
Add the quad to viz.ORTHO instead of viz.SCREEN. Objects added to viz.ORTHO will maintain the same pixel size and aspect ratio, regardless of the window size. The scale and position of the object will need to be specified in pixels though.clusterTex = viz.addTexture('resources\ClusterGraphics.png')
clusterQuad = viz.addTexQuad(parent=viz.ORTHO)
clusterQuad.texture(clusterTex)

# Set size of quad to size of texture
clusterQuad.setScale(clusterTex.getSize())

rlh001
06-17-2012, 04:39 AM
Thanks for the tip. I changed the image to ortho and it looks good. However, since clusterQuad.setPosition is now specified in pixels if I set it up to be in the center of the screen and then run it on a different size display it is no longer in the center. I need to be able to specify position in fraction of widow size.


clusterTex = viz.addTexture('resources\ClusterGraphics.png')
clusterQuad = viz.addTexQuad(parent=viz.ORTHO, size = .5)
clusterQuad.texture(clusterTex)
clusterQuad.setScale(clusterTex.getSize())
clusterQuad.setPosition(640,84)

farshizzo
06-18-2012, 09:31 AM
You can use the following code to link the quad to the center of the main window:viz.link(viz.MainWindow.CenterCenter,cluste rQuad)