Commit b7466f156fd65607c3da51bc4b3f60f274fe71c9

Authored by tfmoraes
1 parent 83a118b3

ENH: Moved the responsability to resize the images from DicomInfo to DicomPaintPanel

Showing 1 changed file with 20 additions and 9 deletions   Show diff stats
invesalius/gui/dicom_preview_panel.py
... ... @@ -74,10 +74,6 @@ class DicomInfo(object):
74 74 @property
75 75 def preview(self):
76 76 if self._preview:
77   - if self.resized:
78   - self.resized = False
79   - s_img = self.img.Scale(*self._size).Mirror(False)
80   - self._preview = wx.BitmapFromImage(s_img)
81 77 return self._preview
82 78 else:
83 79 colorer = vtk.vtkImageMapToWindowLevelColors()
... ... @@ -92,8 +88,7 @@ class DicomInfo(object):
92 88 r = colorer.GetOutput().GetPointData().GetScalars()
93 89 ni = numpy_support.vtk_to_numpy(r)
94 90 self.img = wx.ImageFromBuffer(width, height, ni)
95   - s_img = self.img.Scale(*self._size).Mirror(False)
96   - self._preview = wx.BitmapFromImage(s_img)
  91 + self._preview = self.img.Mirror(False)
97 92 return self._preview
98 93  
99 94  
... ... @@ -105,16 +100,32 @@ class DicomPaintPanel(wx.Panel):
105 100  
106 101 def _bind_events(self):
107 102 self.Bind(wx.EVT_PAINT, self.OnPaint)
  103 + self.Bind(wx.EVT_SIZE, self.OnSize)
  104 +
  105 + def _build_bitmap(self, image):
  106 + bmp = wx.BitmapFromImage(image)
  107 + return bmp
  108 +
  109 + def _image_resize(self, image):
  110 + return image.Scale(*self.GetSize())
108 111  
109 112 def SetImage(self, image):
110 113 self.image = image
  114 + r_img = self._image_resize(image)
  115 + self.bmp = self._build_bitmap(r_img)
  116 + self.Refresh()
111 117  
112 118 def OnPaint(self, evt):
113 119 if self.image:
114 120 dc = wx.AutoBufferedPaintDC(self)
115 121 dc.Clear()
116   - dc.DrawBitmap(self.image, 0, 0)
117   -
  122 + dc.DrawBitmap(self.bmp, 0, 0)
  123 +
  124 + def OnSize(self, evt):
  125 + if self.image:
  126 + self.bmp = self._build_bitmap(self._image_resize(self.image))
  127 + self.Refresh()
  128 + evt.Skip()
118 129  
119 130  
120 131 class Preview(wx.Panel):
... ... @@ -177,7 +188,7 @@ class Preview(wx.Panel):
177 188 #self.title.Bind(wx.EVT_LEFT_DOWN, self.OnSelect)
178 189 #self.subtitle.Bind(wx.EVT_LEFT_DOWN, self.OnSelect)
179 190  
180   - self.Bind(wx.EVT_SIZE, self.OnSize)
  191 + #self.Bind(wx.EVT_SIZE, self.OnSize)
181 192  
182 193 def SetDicomToPreview(self, dicom_info):
183 194 """
... ...