Смещение по вертикали при отображении изображения с помощью wxPython
Вот как мы можем отобразить изображение в кадре wxPython.
import wx
class Viewer(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
self.frame = wx.Frame(None, title='Viewer')
self.panel = wx.Panel(self.frame)
self.imageCtrl = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.BitmapFromImage(wx.EmptyImage(800,600)))
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5)
self.onView('0.png')
self.panel.Layout()
self.frame.Show()
def onView(self, filename):
img = wx.Image(filename, wx.BITMAP_TYPE_ANY)
self.imageCtrl.SetBitmap(wx.BitmapFromImage(img))
self.panel.Refresh()
self.mainSizer.Fit(self.frame)
Viewer().MainLoop()
Если тестовое изображение имеет большие размеры, например 912 x 3616 (здесь я использовал 0.png), я хотел бы установить вертикальное смещение, то есть верхний угол кадра не должен быть (0,0) от изображения но (0,500), т.е. смещение по вертикали 500px.
Как установить вертикальное смещение изображения с помощью wxPython?
1 ответ
Если вы действительно хотите обрезать изображение, самое простое - просто сделать это, то есть создать новое изображение, используя wxImage::GetSubImage()
с регионом, начинающимся с (0, 500).
Чаще всего вы используете прокручиваемое окно, а затем можете изначально прокрутить его на 500 по вертикали, но все же позволить пользователю прокрутить назад к исходной точке.
Также возможно использовать окно прокрутки без полос прокрутки, но это кажется довольно бессмысленным.