Siv3D のちょっとした便利機能
Siv3D Advent Calendar 2016 25 日目の記事です。
Siv3D のあまり知られていない便利機能を紹介します。
1. ログに画像を出力
LOG( )
で出力できるのは文字列や数値だけではありません。
# include <Siv3D.hpp>
void Main()
{
while (System::Update())
{
if (Dragdrop::HasItems())
{
if (const Image image{ Dragdrop::GetFilePaths()[0] })
{
LOG(image);
}
}
}
}
自分のプログラムで実行時に画像がちゃんと生成されているかをデバッグウィンドウから確認したいときに使えます。
同時に HTML ログには縮小された画像が出力されます。Logger::SetMaxImageSize()
や Logger::SetImageQuality()
を使うと、HTML 出力時の画質や画像サイズを設定できます。
2. 標準入出力
Console::Open()
を使うとコンソールウィンドウが開き、C++ 標準入出力の std::cout
, std::cin
が使えます。
# include <Siv3D.hpp>
void Main()
{
Console::Open();
std::cout << "数を入力してください > ";
int32 n;
std::cin >> n;
Console::Close();
const Font font(80);
while (System::Update())
{
font(n).drawAt(Window::Center());
}
}
String
の入出力には std::wcout
, std::wcin
を使います。
# include <Siv3D.hpp>
void Main()
{
Console::Open();
std::wcout << L"名前を入力してください >";
String name;
std::wcin >> name;
Console::Close();
const Font font(80);
while (System::Update())
{
font(name).drawAt(Window::Center());
}
}
3. コマンドライン引数を受け取る
エクスプローラ上でアプリに別のファイルをドロップして起動した場合、2 番目のコマンドライン引数以降にそれらのファイルパスが格納されます。
アプリのアイコンに画像をドロップするとそれが表示されるプログラムは次のように作れます。
# include <Siv3D.hpp>
void Main()
{
const Array<FilePath> args = CommandLine::Get();
Texture texture;
if (args.size() >= 2)
{
texture = Texture(args[1]);
}
while (System::Update())
{
if (texture)
{
texture.draw();
}
}
}
4. 日付と時刻のフォーマット
Date::format()
や DateTime::format()
は、日付や時刻をいい感じに文字列化してくれます。
現在時刻にもとづいて、ユニークなテキストファイルを作りたい場合は次のようにします。
yyyy
等のフォーマットルールはヘッダのドキュメントを参照してください。
# include <Siv3D.hpp>
void Main()
{
const FilePath path = L"Save/"
+ DateTime::Now().format(L"yyyy-MM-dd_HHmmss_SSS")
+ L".txt";
TextWriter writer(path);
}
今年も Siv3D Advent Calendar が完走できました。
皆様、良いお年をお迎えください。
Author And Source
この問題について(Siv3D のちょっとした便利機能), 我々は、より多くの情報をここで見つけました https://qiita.com/Reputeless/items/09b2b20308f19ca58349著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .