7

Edit-->Copy Figureオプションが提供する品質と同じになるように図をクリップボードに印刷する方法はありますか?

以前は、 Matlab Centralから取得したsaveppt.mを使用して、図をパワーポイントファイルに保存していました。昨日までうまくいきました。保存されている画質がどういうわけか劣化していることに気づきました。まったく同じスクリプトと同じソースデータを使用していくつかのpptスライドを再生成しようとしましたが、新しいスライドの品質は単純に劣っています。

この問題を少し調べてみると、を実行して図をクリップボードにコピーするとprint -dmeta、クリップボードの画像が既に劣化しているのに対しEdit-->Copy Figure、図ウィンドウのオプションを使用すると、元の画像と同じくらい鮮明な画像が得られることがわかりました。図ウィンドウの画像。

以下は参考のための例です。2つの異なる方法で画像を図からクリップボードにコピーし、Microsoftペイントプログラムに貼り付けて、その一部を切り取って以下に示します。

を使用した画像print -dmetaを使用して保存された図

を使用した画像Edit-->Copy Figureを使用して保存された図

Xtickラベル「50」を比較すると、からの画像Edit-->Copy Figureがより滑らかであることがわかります。

最初は解像度の問題だと思っていましたが、解像度-rNを変更するように設定しても、少なくともN <= 300の場合は、問題が解決しないようです。

ご協力ありがとうございました。

4

2 に答える 2

6

簡単な答えは...そのメニュー項目のコールバックで呼び出された同じ関数を使用します。

editmenufcn(gcf,'EditCopyFigure');


より長い答え...どうやってこれを見つけたのですか?ファイル メニュー オプションで実行される内容の再現に関する関連する質問に対する以前の回答を参照してください。フィギュアメニューが違うだけでコンセプトは同じです。たとえば、これは現在アクティブな Figure ウィンドウに必要なコールバックを見つけます。

>> 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')

関数 EDITMENUFCN は、まばらに文書化されている関数の 1 つですが、( と入力してedit editmenufcn.m) コードを調べると、Java (Mac を使用している場合) または文書化されていない関数 UIMENUFCN を呼び出すことがわかります。

于 2010-12-15T19:04:26.990 に答える
2

答えは自分で見つけたと思います。を使用print -dmeta -paintersしてレンダラーを指定すると、問題が解決します。

File-->Preference-->Figure Copy Template-->Copy Option私は3つのオプションがあることに気づきました:

  1. メタファイル
  2. 情報を保存する
  3. ビットマップ

1 を選択すると、Edit-->Copy Figureは と同じ画像を出力することがわかりましたprint -dmeta。それで、必要な情報がPreserve informationオプションにあることを確認しました。簡単なグーグル検索で、適用されたレンダラーの潜在的な違いについての議論につながり、最終的に、使用paintersすると希望どおりに画像がクリップボードに印刷されることを確認しました.

問題の画像は、それぞれレンダラーzbufferとによって生成されているようpaintersです。paint -dmetaただし、デフォルトのレンダラーが変更される理由はまだわかりません。

于 2010-12-15T22:26:38.930 に答える