BMP または JPG 形式の画像を生成する API を使用しています。問題の API メソッドには、パスとファイル名が必要です。ただし、場合によっては、画像をクリップボードに入れたいだけです。
ファイルに保存してから、ファイルを開いてストリームのデータをクリップボードにコピーできることはわかっています。
private void SaveSnapshot(string path)
{
var pathWasblank = path.IsNullOrBlank();
path = path.NullIfBlank() ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),"tempFile.jpg");
myApiInstance.ExportJPG(path, 100, true);
//to ensure the file has made it to the filesystem
while(!File.Exists(path)) Thread.Sleep(100);
if (pathWasblank) //it should be on the Clipboard and not in a file
{
using (var stream = File.OpenRead(path))
Clipboard.SetImage(Image.FromStream(stream));
File.Delete(path); //cleanup;
}
}
私が知りたいのは、ファイルを再度開き、コピーしてから削除する必要をスキップし、代わりにクリップボードに対応するファイルパスを指定してクリップボードに直接「保存」する方法があるかどうかです。そうでない場合は、大したことではありません。私は実用的な解決策を持っています。