2010-12-15 56 views
7

Y a-t-il un moyen d'imprimer la figure dans le presse-papiers de sorte que la qualité soit identique à celle offerte par l'option Edit-->Copy Figure?Comment imprimer figure à presse-papiers par fonction IMPRIMER avec la qualité identique à l'option 'Edition -> Copier la figure'?

J'ai utilisé pour enregistrer la figure au fichier powerpoint en utilisant saveppt.m obtenu à partir de Matlab Central. Cela a bien fonctionné jusqu'à hier. J'ai remarqué que la qualité de l'image stockée était en quelque sorte dégradée. J'ai essayé de générer à nouveau des diapositives ppt avec exactement le même script et les mêmes données sources, mais les nouvelles diapositives sont simplement de moins bonne qualité.

Je mené une enquête sur ce problème un peu et a découvert que lorsque le chiffre est copié dans le presse-papiers en exécutant print -dmeta, l'image dans le presse-papiers est déjà dégradé, alors que si j'utilise l'option Edit-->Copy Figure dans la fenêtre de figure, je reçois la image aussi claire que l'image originale dans la fenêtre de la figure.

Voici un exemple pour votre référence. J'ai copié l'image d'une figure dans le presse papier par deux méthodes différentes, et le coller dans Microsoft Paint programme, et couper un morceau montrer ci-dessous:

L'image en utilisant print -dmeta: stored figure using "print -dmeta"

L'image à l'aide Edit-->Copy Figure: stored figure using "Copy Figure"

Si vous comparez l'étiquette Xtick '50', vous pouvez voir que l'image de Edit-->Copy Figure est plus lisse. Au début, je pensais que c'était un problème de résolution, mais le réglage -rN pour changer la résolution ne semble pas résoudre mon problème, du moins pas pour N < = 300.

Merci pour votre aide.

Répondre

2

Je pense avoir trouvé la réponse moi-même. L'utilisation de print -dmeta -painters pour spécifier le moteur de rendu résout mon problème.

En File-->Preference-->Figure Copy Template-->Copy Option j'ai remarqué il y a 3 options:

  1. Metafile
  2. Conserver les informations
  3. Bitmap

je trouve que si je sélectionne 1, les Edit-->Copy Figure sorties la même image que print -dmeta. J'ai donc confirmé l'information dont j'ai besoin dans l'option Preserve information. Une rapide recherche google m'a conduit à la discussion sur la différence potentielle du moteur de rendu appliqué, et finalement j'ai confirmé que l'utilisation painters imprimera l'image dans le presse-papiers de la manière que je voulais.

L'image dans la question semble être générée par le moteur de rendu zbuffer et painters, respectivement. Je ne sais toujours pas pourquoi le rendu par défaut de paint -dmeta change, cependant.

6

La réponse courte ... Utilisez la même fonction invoquée dans le rappel pour cet élément de menu:

editmenufcn(gcf,'EditCopyFigure'); 


La réponse plus ... Comment exactement Ai-je trouvé ce? Vous pouvez regarder my previous answer à un related question about reproducing what is done by a File menu option. Le concept est le même, juste pour un menu différent. Par exemple, cela trouvera le rappel que vous voulez pour la fenêtre figure active:

>> hCopyFigure = findall(gcf,'Label','Copy &Figure'); %# Handle for the "Copy 
                 %# Figure" menu item 
>> get(hCopyFigure,'Callback') %# Callback invoked when that item is selected 

ans = 

editmenufcn(gcbf,'EditCopyFigure') 

La EDITMENUFCN fonction est une autre de ces fonctions peu documentées, mais en regardant à travers le code (en tapant edit editmenufcn.m) montre qu'il soit invoque Java (si vous êtes sur Mac) ou la fonction non documentée UIMENUFCN.

+0

Gah! Juste quand j'étais sur le point de soumettre le post! +1 pour la vitesse. BTW: Matlab a aussi une fonction 'clipboard', qui n'est malheureusement que pour les chaînes. – Jonas

+0

+1 pour le correctif rapide. Cependant, ce sera génial si je peux obtenir le paramètre/propriétés qui rend 'print -dmeta' aussi bon que' Edit -> Copy Figure'. Après tout, l'option Copier la figure n'est pas sous mon contrôle, et la qualité de l'image peut aller mal un jour sans raison, tout comme ce que j'ai rencontré hier. J'ai changé le titre de ma question pour mieux répondre à mes besoins. – YYC

+0

Voici un article que j'ai écrit sur ce sujet (ou en général, comment utiliser et modifier la barre d'outils Matlab par défaut et les rappels de barre de menu): http://undocumentedmatlab.com/blog/modifying-default-toolbar-menubar-actions/ –