1

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;
        }
    }

私が知りたいのは、ファイルを再度開き、コピーしてから削除する必要をスキップし、代わりにクリップボードに対応するファイルパスを指定してクリップボードに直接「保存」する方法があるかどうかです。そうでない場合は、大したことではありません。私は実用的な解決策を持っています。

4

0 に答える 0