パソコンで資料やブログなどを作っていると、画面の一部を切り出して画像ファイル化したいことがあります。
そんな時、私はあまりスマートな方法は知らないので、Windows ツールのペイントをよく使うのが普通でした。それは、
- Ctrl-Alt-PrtSc、または、Ctrl-PrtSc により、フォームあるいはスクリーン全体の画像データをクリップボードに送る。
- ペイントを開き、クリップボードのデータを貼り付ける。
- ペイント中で四角形を選択し、Ctrl-C あるいは Ctrl-X で、画像の一部を再度クリップボードにコピーする。
- ペイントを新規にする(今までのデータは消去)か、ペイントの新たなオブジェクトを開き、「画面のプロパティ」で有効領域を十分小さくしてから、Ctrl-V でペーストする。
- ファイル保存する。
ルーチンになってしまうと何でもないことでも、ビビッて匙を投げた人を複数知っています。最初はパニックになる程のことには違いなく、正直、それを非難するつもりもありません。
手数が多いことだけが問題なのではありません。例えばポートレートを切り出す場合、人物の大きさを目的に合わせるのも大切なことですが、中心に配置することにもそれ以上に気を遣います。
しかも出来上がりは正確なサイズでなくてはいけません。切り出しをどこから始めればうまくいくか、何度もやり直した経験の人も多いと思います。
正直、負荷の多い不自然な定型作業であって、心理的に回避したいことではあります。
これを改善するためにツールを作ってみました。これによると、次のように単純なステップで作業できます。
- ブラウザまたはアプリケーションの上で、適当なサイズの画像を用意する。
- ツールの枠を目的のサイズにしておき、切り出すべき画面部分に合わせる。
- ファイル保存する。
さて、これを実現するために、窓のように透明な部分があるフォームを使っています。
ところで、随分前に、C# に関するチャットで、フォームを透明にすることができるかどうかの疑問が出されたことがありました。
そこで Opacity を使う不完全な方法が提案され、これによると確かにフォームを幽霊のように薄くできるが、ちゃんと表示したい線や文字も薄くなり、
Opacity = 0 つまり、完全に透明にすると、表示も完全に消えてしまいます。完全に透明な幽霊は実世界に影響を与えることもできません。
そうであるはずのところをブレークしてしまったのが今回のコードです。
【できること】
こんな感じで、PC 上の画面に重ねます。フォームの大部分は半透明、四角い穴は完全に「透明」で、穴の際は少し「反射して」います。