D2007Proを使用しています。
タイトルの通り、デスクトップの右下に任意の文字を描画するプログラムを
作りたいと思っています。
下記参考URLのようにしたいのですが、画像処理関連がさっぱりです。
答えそのものでも大歓迎ですが、座標の取り方や手法などでヒントや
参考サイトがあれば教えてください。
・解像度に関係なく、画面右下に文字列を表示させたい
・よくある「常に手前に表示」のON/OFFを実装したい
参考URL: ttp://trendy.nikkeibp.co.jp/article/tec/winxp/20060713/117656/03.jpg
よろしくお願いいたします。
こんにちは.Mr.XRAYです.
こんなサンプルがありますね.
新たにウィンドウを表示すると,そこに隠れた部分は,表示したウィンドウを閉じると,
消えてしまいます.
表示したいのであれば,その処理が必要でしょう.
https://www.petitmonte.com/bbs/answers?question_id=774
http://www.geocities.jp/asumaroyuumaro/program/tips/createdc.html
考え方は,デスクトップのデバイスとコンテキストを取得し,
そのキャンパスを生成し,そのキャンパスに描画することになります.
また,背景が透明なフォームに文字列や画像を描画して表示する
という考え方もあるかも知れません.
>・よくある「常に手前に表示」のON/OFFを実装したい
だとすると背景が透明なフォームということになりそうです.
画面の表示位置は,マルチモニターでのことも考慮する必要があるかも知れません.
透明なフォーム。
・Form1のTransparentColorプロパティをTrueに。
・Form1のTransparentColorValueプロパティを例えばclFuchsiaなどに。
・Form1のColorプロパティの値を↑で指定した値(clFuchsia)と同じに。
これだけで透明なフォームが作れます。
ただこの透明なフォームは透明になった部分を触ってもそのフォームはアクティブにはなりません。
透明でない部分(例えばLabelの文字の部分など)を触るとアクティブになります。
画面の右下にForm1を表示させるにはヘルプでTScreenを見ると良いと思います。
細かいところでプログラム実行中のモニター数の変更に関しての注意点です。
http://drang.s4.xrea.com/program/tips/memo/tscreen.html
Mr.XRAYさん、いつもお世話になってます。
Dさん、レスありがとうです。
なんとか意図するものを作ることができました。
所謂クリックに反応しない「透明な付箋」を作りたかったんですね。
デバイスコンテキストを使った処理はハードル高そうだったので
フォームで透明化する方法を使わせていただきました。
画面右下への表示は
SystemParametersInfo(SPI_GETWORKAREA, 0, @DTRect, 0);
を使って BorderStyle := bsNone; にしたフォームをラベルサイズにして
幅と高さでやってみました。マルチモニタ環境で使うことはまずないです。
若干ズレがあったり、ラベル文字部分はクリックに反応してしまうなど
ありましたが、今回はこれで良しとしてます^^;
ご助言、どうもありがとうございました。
ツイート | ![]() |