Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a402aa1

Browse files
authored
Merge pull request #22020 from anntzer/wxpi
Simplify wx _print_image.
2 parents 83a8a5b + cda955b commit a402aa1

File tree

1 file changed

+11
-27
lines changed

1 file changed

+11
-27
lines changed

lib/matplotlib/backends/backend_wx.py

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -842,34 +842,18 @@ def draw(self, drawDC=None):
842842
self.gui_repaint(drawDC=drawDC)
843843

844844
def _print_image(self, filetype, filename):
845-
origBitmap = self.bitmap
846-
847-
self.bitmap = wx.Bitmap(math.ceil(self.figure.bbox.width),
848-
math.ceil(self.figure.bbox.height))
849-
renderer = RendererWx(self.bitmap, self.figure.dpi)
850-
851-
gc = renderer.new_gc()
852-
self.figure.draw(renderer)
853-
854-
# image is the object that we call SaveFile on.
855-
image = self.bitmap
856-
857-
# Now that we have rendered into the bitmap, save it to the appropriate
858-
# file type and clean up.
859-
if (cbook.is_writable_file_like(filename) and
860-
not isinstance(image, wx.Image)):
861-
image = image.ConvertToImage()
862-
if not image.SaveFile(filename, filetype):
845+
bitmap = wx.Bitmap(math.ceil(self.figure.bbox.width),
846+
math.ceil(self.figure.bbox.height))
847+
self.figure.draw(RendererWx(bitmap, self.figure.dpi))
848+
saved_obj = (bitmap.ConvertToImage()
849+
if cbook.is_writable_file_like(filename)
850+
else bitmap)
851+
if not saved_obj.SaveFile(filename, filetype):
863852
raise RuntimeError(f'Could not save figure to {filename}')
864-
865-
# Restore everything to normal
866-
self.bitmap = origBitmap
867-
868-
# Note: draw is required here since bits of state about the
869-
# last renderer are strewn about the artist draw methods. Do
870-
# not remove the draw without first verifying that these have
871-
# been cleaned up. The artist contains() methods will fail
872-
# otherwise.
853+
# draw() is required here since bits of state about the last renderer
854+
# are strewn about the artist draw methods. Do not remove the draw
855+
# without first verifying that these have been cleaned up. The artist
856+
# contains() methods will fail otherwise.
873857
if self._isDrawn:
874858
self.draw()
875859
# The "if self" check avoids a "wrapped C/C++ object has been deleted"

0 commit comments

Comments
 (0)