アプリ全体の変更を行う処理について 3つ
Rinifisu  2014/09/25(Thu) 00:58
http://dobon.net/vb/dotnet/form/opacity.html
こちらであるようなアプリ全体の透明度を変更する処理が行いたいです。
時計アプリを作る予定なので、必要なときに濃く表示して、アクティブでは無いときには薄くするようにできればうれしいです。

---------------------------------------------------------------------

ウィンドウサイズを変更しても、アプリ内の座標は変更されないようにする簡単な処理があれば知りたいです。
自動で縮小するゲームライブラリ等がありましたので、同じようなことができればうれしいです。
過去に解像度の互換性が無いPCで作品発表をすることになり、このことが原因となって画面全体が表示できずに断念したことがありました。
画像の「理想」ができればうれしいです。

---------------------------------------------------------------------

背景以外何もクリックや触れていない時にtrueを返すものがあれば教えてください
ウィンドウフレームをなしにした場合の移動方法が無いので、できればうれしいです。



Reputeless  2014/09/25(Thu) 01:31
[1]
ウィンドウの一部または全部を透明化する機能は、将来実装を検討しています。

[2]
2D グラフィックスのスケーリングは Graphics::Set2DTransform({ scale, scale }); で実現できます。
ただし現時点ではカーソル座標はそのまま変わらないため、マウス入力まわりが不便です。
将来的に改良予定です。

# include <Siv3D.hpp>

void Main()
{
const Texture texture(L"Example/Windmill.png");

const double scaling = 0.2;

Graphics::Set2DTransform({ scaling, scaling });

while (System::Update())
{
const Vec2 mousePos = Mouse::Pos() / scaling;

texture.draw(100, 100);

const Rect rect(320, 240, 320, 240);

rect.draw(rect.intersects(mousePos) ? Palette::Red : Palette::Yellow);
}
}

[3]
「背景以外何もクリックや触れていない」の意味が分かりかねますが、
!Rect(Window::Size()).mouseOver のことでしょうか。

枠なしウィンドウの移動は次のコードの通りです。

# include <Siv3D.hpp>

void Main()
{
Window::SetStyle(WindowStyle::NonFrame);

Point pos = Window::GetPos();

while (System::Update())
{
if (Input::MouseL.pressed)
{
pos += Mouse::ScreenDelta();

Window::SetPos(pos);
}
}
}
Rinifisu  2014/09/25(Thu) 20:12
回答ありがとうございます。
3はGUIや図形をクリックしているときは移動を無効にしたかったのですが、
アプリ内でドラッグを画面の移動のみにすることで解決してしまいました。

- WEB PATIO -