Commit b7466f156fd65607c3da51bc4b3f60f274fe71c9
1 parent
83a118b3
Exists in
master
and in
68 other branches
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 | """ | ... | ... |