我正在使用一个生成 BMP 或 JPG 格式图像的 API。有问题的 API 方法需要路径和文件名。但是,在某些情况下,我想简单地将图像放入剪贴板。
我知道我可以保存到文件,然后打开文件并将 Stream 的数据复制到剪贴板:
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;
}
}
我想知道的是,是否有一种方法可以跳过重新打开、复制然后删除文件,而是通过指定与剪贴板相对应的一些文件路径直接“保存”到剪贴板。如果没有,没什么大不了的;我有一个可行的解决方案。