スクリーンショットを保存する

Siv3D Advent Calendar 2013, 7 日目の記事です。
今日は Siv3D のスクリーンショットに関する機能を紹介します。


スクリーンショットを指定したファイル名で保存する

Graphics::SaveScreenshot(path) を呼ぶと、現在のフレームの描画が完了したときに、指定したファイル名でスクリーンショットが保存されます。使用できる拡張子は Image::save() と同様 bmp, png, jpg, jpeg, dds, gif, tif, tiff, tga, webp, jp2, ppm です。
第一引数のファイル名を省略した場合は Screenshot フォルダが作られ、その中にユニークなファイル名で保存されます。

# include <Siv3D.hpp>

void Main()
{
	while (System::Update())
	{
		if (Input::KeyS.clicked)
		{
			Graphics::SaveScreenshot(L"screenshot.png");
		}
	}
}

スクリーンショットを Image 形式で取得する

スクリーンショットをアプリケーションで使うときは、ファイルを介さずに直接 Image 形式で取得しましょう。直前のフレームで Graphics::RequestScreenCapture() を呼び、次のフレームで Graphics::ReceiveScreenCapture() から Image を受け取ります。

# include <Siv3D.hpp>

void Main()
{
	bool request = false;

	while (System::Update())
	{
		if (request)
		{
			request = false;

			const Image image = Graphics::ReceiveScreenCapture();
		}

		if (Input::KeyS.clicked)
		{
			Graphics::RequestScreenCapture();

			request = true;
		}
	}
}

Print Screen キーでスクリーンショットを保存する

Print Screen キーを押したときに自動でスクリーンショットを保存するよう設定できます。プレイ画像をいつでも好きな時に撮りたいときはこの機能を利用しましょう。

設定手順は engine フォルダにある config.ini の

bSaveScreenshot = false

bSaveScreenshot = true

に変更するだけです。
保存先は Graphics::SaveScreenshot() と同じく Screenshot フォルダです。