DXライブラリの画面保存関数
DXライブラリには複数の画面保存関数が用意されている。
それらを使用することで任意の領域の画像を保存できる。
非公開関数も含めた一覧は次の通り。
- SaveDrawScreen
- SaveDrawScreenToBMP
- SaveDrawScreenToJPEG
- SaveDrawScreenToPNG
SaveDrawScreenではBMP形式でしか保存できない。
PNG形式で保存するならSaveDrawScreenToPNGを使用する。
JPEG形式で保存するならSaveDrawScreenToJPEGを使用する。
PNGとJPEGは圧縮率の指定も可能。
画面保存関数の使い方
画面保存関数宣言一覧
同じような内容なので全部まとめてみた。
int SaveDrawScreen(int x1, int y1, int x2, int y2, const TCHAR *FileName);
int SaveDrawScreenToBMP(int x1, int y1, int x2, int y2, const TCHAR *FileName);
int SaveDrawScreenToJPEG(int x1, int y1, int x2, int y2, const TCHAR *FileName, int Quality, int Sample2x1);
int SaveDrawScreenToPNG(int x1, int y1, int x2, int y2, const TCHAR *FileName, int CompressionLevel);
SaveDrawScreenはDXライブラリ公式リファレンスとヘッダファイルの宣言で異なっているが、DXライブラリ公式リファレンスに準じてみた。
画面保存関数の注意点
座標指定の注意点
右下座標の指定は+1した値にする。
640×480サイズの右下座標は(639,479)になるが、画面保存関数では(640,480)のように指定する。
指定する値は座標であって、幅や高さではないことに注意する。
ファイル名は拡張子も含める
拡張子が自動的に付与されることはない。
ファイル名を指定する際に拡張子まで含めること。
圧縮率(画質)の注意点
SaveDrawScreenToJPEGのQualityは0~100の値で指定する。
0が低画質、100が高画質。
Sample2x1の詳細は分からないがTRUEでいいと思われる。
CompressionLevelは0~9で指定する。
0が無圧縮、9が高圧縮。
透過色の存在
詳しい条件は不明だがPNG形式で保存した際に透過済みの場合が確認できた。
画面を初期化した後、何も描画しなければ透明になるかもしれない。
ClearDrawScreenで画面を初期化した場合も同様に透明になることが確認できた。
サンプルコード
SaveDrawScreen(0, 0, 640, 480, "screenshot.bmp");
SaveDrawScreenToPNG(0, 0, 640, 480, "screenshot.png", 0);
SaveDrawScreenToJPEG(0, 0, 640, 480, "screenshot.jpg", 100, TRUE);
表画面が保存されるので裏画面を使用している場合は注意する。