rzzzwil...@gmail.com wrote:
Hi,
I've googled for this, but can only find things like openlayers that
is a web-based javascript solution.
I need to display an image at various zoom levels and want to allow
the user to pan around in the Google maps style, that is, left-click
hold and drag. The code should also action double-clicks on the image
(but that's easy).
There are no 'standard' wxpython widgets that allow this. Can anyone
point me to information on how to implement such a thing, or maybe
some working code?
Thanks,
Ross
These are all (?) of the pieces in my working image display program. It
rotates and scales. It's an exercise to the reader to divide it up.
For example, you don't want to rerun all of this every time the mouse
drags a little. So these are in two different places, where the first
group only happens when you change the image file, or rotate by an angle
other than 90 degrees
self._img = wx.Image(self.fname, wx.BITMAP_TYPE_ANY)
self._img = wx.EmptyImage(42, 42, True) #create a plain
black image, 42 x 42 pixels
self._img = self._img.Rotate90()
self._img = self._img.Rotate(-radians, center)
img2 = img1.Scale(self.imageW()*scale/1000,
self.imageH()*scale/1000) #this is where image is scaled to final bit
dimensions. It's clipped during drawBitmap()
tracer("drawStuff Scale", "draw")
bmp = wx.BitmapFromImage(img2)
w, h = self.GetClientSize() #self is a
subclass of Panel
self.buffer = wx.EmptyBitmap(w, h)
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
dc.DrawBitmap(bmp, cornerX, cornerY, False)
Hope this helps. I tied the scaling to the mousewheel, and used drag to
move the cornerX and cornerY. Notice they can go negative, as well as
positive.
--
http://mail.python.org/mailman/listinfo/python-list