メインコンテンツまでスキップ

エディタで表示しているビューの画像を取得する

エディタで表示しているビューの画像を取得するには IEditorView オブジェクトの GetImage メソッドを用います。 以下は現在表示しているエディタからイメージを取得し、BMP 形式で画像を保存する例です。

public void GetImage(ICommandContext c, ICommandParams p)
{
// 保存先ファイルパスを設定します
string outputFilePath = c.App.Window.UI.ShowSaveFileDialog("保存先ファイルパス", "bmp file (*.bmp)|*.bmp");
if(string.IsNullOrEmpty(outputFilePath))
{
// 保存先ファイルパスを取得できなかった場合は処理を終了します
c.App.Output.WriteLine("sample", "保存先ファイルパスを設定していません。");
return;
}

// ダイアグラムからイメージを取得します。
IEditorView editorView = c.App.Window.EditorPage.CurrentEditorView;
System.Windows.Media.Imaging.BitmapSource bitmapSource = editorView.GetImage();
if (bitmapSource == null)
{
// ダイアグラムを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "表示中のエディタからビューの画像を取得できませんでした。");
return;
}

// 取得したイメージを BMP 形式で出力先ファイルパスに保存します
using (System.IO.FileStream fileStream = new System.IO.FileStream(outputFilePath, System.IO.FileMode.Create))
{
System.Windows.Media.Imaging.BitmapEncoder encoder = new System.Windows.Media.Imaging.BmpBitmapEncoder();
encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapSource));
encoder.Save(fileStream);
}

c.App.Output.WriteLine("sample", $"{outputFilePath} に画像を保存しました。");
}

PNG 形式で画像を保存したい場合、IEditorView オブジェクトの SaveImage メソッドを用いることができます。
以下は現在表示しているエディタのイメージを保存する例です。

public void SaveImage(ICommandContext c, ICommandParams p)
{
// 保存先ファイルパスを設定します
string outputFilePath = c.App.Window.UI.ShowSaveFileDialog("保存先ファイルパス", "png file (*.png)|*.png");
if(string.IsNullOrEmpty(outputFilePath))
{
// 保存先ファイルパスを取得できなかった場合は処理を終了します
c.App.Output.WriteLine("sample", "保存先ファイルパスを設定していません。");
return;
}

// ダイアグラムのイメージを保存します。
IEditorView editorView = c.App.Window.EditorPage.CurrentEditorView;
editorView.SaveImage(outputFilePath);

c.App.Output.WriteLine("sample", $"{outputFilePath} に画像を保存しました。");
}