- ベストアンサー
仕組みを知りたいのですが
マウスの選んだところだけ拡大する「虫眼鏡ツール」系のアプリはどういう仕組みなのでしょうか。拡大されている部分の最新の状態はスクリーンショットでは隠れているため取れないと思うのですが。 また一時的に拡大を解くと、画面がちらつくような気もしますし、、 アプリによりけりだとは思われますが、一例でもご存じありませんか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
★追記。 ・SetLayeredWindowAttributes関数を正常に使うには 拡張ウインドウ・スタイルに WS_EX_LAYERED をつけて下さい。 そして #define _WIN32_WINNT (0x0500) と include する前に定義してください。 これをしないとコンパイルできません。 ・これで正常に半透明機能が働きます。
その他の回答 (6)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・半透明にしたいのですか? 質問では『虫眼鏡ツール』を作成中なのですよね。 SetLayeredWindowAttributes関数を使って普通にマウスの周囲を 拡大すれば虫眼鏡ウインドウの下の画面情報を映し出せます。 ・マウスの周囲はタイマーなどを使って定期的に更新すれば良いでしょう。 WM_CREATEの部分で1回だけSetLayeredWindowAttributes関数を呼び出せばよい。 タイマー部で現在のマウス座標を取得、中心点などを計算して クライアント領域などに拡大すれば済みます。 半透明にする必要はないと思うのでα値は 255 にしておきます。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★ヒント ・SetLayeredWindowAttributes関数を利用すると出来ます。 α値は255にして使います。 例: SetLayeredWindowAttributes( hWnd, 0, 255, LWA_ALPHA );
お礼
ありがとうございます。 早速入れてみましたが、半透明にできませんでした。 WEB上のサンプルはうまく動いたので 私のソースに原因があると思います。 またわからなくなったら相談させてください。
- titokani
- ベストアンサー率19% (341/1726)
#2です。 >http://www.vector.co.jp/soft/winnt/util/se386042.html なるほど。 隠されている部分も表示されていますね。 Spy++で見てみましたが、どうやら「レイヤードウィンドウ」のようです。 「レイヤードウィンドウ」で検索してみると、なにかヒントが得られるかもしれません。
- php504
- ベストアンサー率42% (926/2160)
http://www.vector.co.jp/soft/winnt/util/se386042.html ↑こういうものかな Vistaですが起動時にだけちらつくので何かやってるんでしょうね やり方は思いつきません
お礼
ありがとうございます。レイヤーウインドウを現在勉強中です。 また行き詰ったらお助けください。
- titokani
- ベストアンサー率19% (341/1726)
「虫眼鏡」によって隠されている部分がどうして拡大できるにか? という疑問でしょうか? 例えば、VC++6.0にはZoomInというツールがついていましたが、これはZoomIn自体に隠されている部分は拡大できません。ZoomInに対してカーソルを合わせると、合わせ鏡のような表示になります。 実際のところ、隠された部分も拡大できる「虫眼鏡ツール」なるものは見たことがないのですが、実際のところ、どんなツールが存在するのでしょうか?
- jacta
- ベストアンサー率26% (845/3158)
環境不明なので一概にはいえませんが、実現方法は大きく分けて二つしかないと思います。 一つは、実際にレンズ等を調整してズームを行う光学式のものです。カメラや顕微鏡ではこの方式が原則ではないかと思います。 もう一つは、デジタル式のもので、例えば一つのピクセルを四つのピクセルにプロットしなおせば、縦横二倍に拡大することができます。 > マウスの選んだところ とのことですが、具体的に、どんな装置でどこをどのように選ぶかによって設計が変わるはずです。 他の疑問点に関しても、完全に環境等に依存します。
お礼
お世話になっております。 アドバイス通りにしたところ、 うまく動作しました。 私自身虫眼鏡ツールのような アプリケーションを作ろうと思っておりましたので、 とてもありがたく思います。