Axes box incompletely copied to clipboard

조회 수: 6 (최근 30일)
Matt J
Matt J 2022년 9월 1일
이동: Matt J 2023년 3월 23일
I am trying to put a red box around an image, like the following, and then copy/paste into a PowerPoint file.
imagesc(ones);hax=gca;
set(hax.XAxis,'Color','r','LineWidth',8)
set(hax.YAxis,'Color','r','LineWidth',8);
xticks([]);
yticks([]);
When rendered in a Matlab figure window, it looks fine. However, when I copy it to PowerPoint using,
copygraphics(gcf, 'BackgroundColor', 'none', 'ContentType', 'vector');
or just the Copy Figure option from the figure Edit menu, the copied figure has a small chunk missing from the upper-left corner. Is there a remedy for this?
  댓글 수: 2
Matt J
Matt J 2022년 9월 2일
이동: Matt J 2023년 3월 23일
export_fig from the File Exchange seems to be able to copy the figure gracefully to the clipboard.
imagesc(ones);hax=gca;
set(hax.XAxis,'Color','r','LineWidth',6)
set(hax.YAxis,'Color','r','LineWidth',6);
xticks([]);
yticks([]);
axis image
export_fig(hax,'-transparent','-clipboard')
Matt J
Matt J 2022년 9월 2일
이동: Matt J 2023년 3월 23일
Unfortunately, figure transparency is not preserved with the -clipboard switch :-(

댓글을 달려면 로그인하십시오.

채택된 답변

Yair Altman
Yair Altman 2022년 12월 4일
이동: Matt J 2023년 3월 23일
@Matt J export_fig(gcf,'-transparent','-clipboard') v3.28 now supports figure transparency for image fomats as well as EMF (where transparency was already supported in previous releases).
Please report export_fig issues on GitHub from now on, not in a FEX or Answers comment - I nearly missed this and only saw it by chance.
  댓글 수: 1
Matt J
Matt J 2022년 12월 4일
이동: Matt J 2023년 3월 23일
Great news, Yair!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Kevin Holly
Kevin Holly 2022년 9월 2일
이동: Matt J 2022년 9월 2일
Have you tried getframe?
h = getframe(hax)
Image = h.CData;
You can save the Image to PowerPoint as shown below (Note, you will need to adjust the placement and size of the image within the PowerPoint):
%% Open PowerPoint as a COM Automation server
h = actxserver('PowerPoint.Application')
uiwait(msgbox('Select folder to save PowerPoint'))
folder = uigetdir;
% Show the PowerPoint window
h.Visible = 1;
h.Help
%% ADD PRESENTATION
% View the methods that can be invoked
h.Presentation.invoke
% Add a presentation via "Add" method
Presentation = h.Presentation.Add
%% ADD SLIDES
% View the methods that can be invoked
Presentation.Slides.invoke
% Add a slide via "Add" method
% IF USING OFFICE 2003, use these commands:
% % Slide1 = Presentation.Slides.Add(1,'ppLayoutBlank')
% % Slide2 = Presentation.Slides.Add(2,'ppLayoutBlank')
% IF USING OFFICE 2007, use these commands:
blankSlide = Presentation.SlideMaster.CustomLayouts.Item(1);
Slide1 = Presentation.Slides.AddSlide(1,blankSlide);
Slide2 = Presentation.Slides.AddSlide(1,blankSlide);
%% GENERATE MATLAB IMAGES
figure;
image(Image)
print('-dpng','-r150',fullfile(folder,'test1.png'))
%% ADD IMAGES TO SLIDES WITH TITLES
% Note: Change the image file full path names to where you save them
Image1 = Slide1.Shapes.AddPicture(fullfile(folder,'test1.png'),'msoFalse','msoTrue',100,20,200,500)
Title1 = Slide1.Shapes.AddTextbox('msoTextOrientationHorizontal',200,10,200,70)
Title1.TextFrame.TextRange.Text = 'Image 1'
%% SAVE PRESENTATION
% Note: Change the presentation full path name to where you save it
Presentation.SaveAs(fullfile(folder,'ExamplePresentation.ppt'))
%% Close PowerPoint as a COM Automation server
h.Quit;
h.delete;
  댓글 수: 1
Matt J
Matt J 2022년 9월 2일
편집: Matt J 2022년 9월 2일
Thanks Kevin,
That does indeed get rid of the artifact in the upper-left corner (and is also a nice illustration of the fancy things you can do with automatic PowerPoint generation). However, I would ideally like to have a solution that sends the image to the clipboard, so that it can be pasted into other environments as well.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB Report Generator에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by