初めて質問させていただきます。
開発環境はVB.netです。
Form1にはいくつかのLabelが配置されています。
Form1の内容を隠した状況で、Form1より小さいサイズのForm2(サイズは可変)を用意し、重なった部分のみForm1に配置されたLabelの内容を入手(操作)できるコードを作成したいと思っています。
ご教授よろしくお願いいたします。
技術系掲示板においては、自分で下調べをし、できなかったにしろ
どういったことを試して、なぜ上手くいかなかったかくらいは説明
します。
上記の質問文にはそれがありません。
何の技術的な見通しもなく、仕様のみ書いて丸投げしているため、
仕事の依頼をしているのと同等です。そうであるなら、しかるべき
場所でお金を支払い、プログラマを雇って作成してもらうようにして
ください。
特攻隊長まるるうさん
ご指摘ありがとうございます。質問文が不足していて、すみませんでした。
追記させていただきます。
初めにForm2をTransparencyKeyを用いて透過させ実現しようとしたのですが、
問題①タイトルバーを消しているため窓の移動ができない。
問題②Form1を隠しきることができない。
という問題に突き当たりました。
次に、リージョンオブジェクト(Intersectにより重なった部分のみ有効にする)を用いて解決しようとしたのですが、Form1を隠すことはできそうですが、
問題③透過しているわけではないので、Form1を操作できない。
といった問題に突き当たってしまいました。
この2つの手法を組み合わせればうまくいきそうな感じもするのですが、どう実現すればいいか分かりません。
下図を隠した状況で、重ねた窓から下図の情報を拾う方法はないでしょうか。
よろしくお願いします。
>タイトルバーを消しているため窓の移動ができない。
MouseDownとMouseMoveメソドを使えば間単にできるのでは。
>Form1を隠しきることができない。
透過してるんだから、隠しきることはできないのでは。
>下図を隠した状況で、重ねた窓から下図の情報を拾う方法はないでしょうか。
LabelのTextを拾うんだったら隠す隠さないは無関係では。
まぁ、丸いかどうかは書いてありませんが、サーチライトみたい
なのを作りたいんじゃないかと予想してます。が、単純な方法
は思いつきませんね。
> TransparencyKey
[DOBON.NET フォームウィンドウの特定の色を透明にする]
http://dobon.net/vb/dotnet/form/transparencykey.html
こんな感じで?問題なのが、人形のようなものの表示とは
透明・不透明にするところが逆転してて、Form2 から見たら
不透明にする範囲が無限(?)ってとこ?Form1 の範囲だけ
塗りつぶさなきゃいけないんだろうけど、そうなってくると
塗りつぶしは Form1 の描画処理でやるべきだろうね。
Form2 (ある一定)の範囲を除いて自身を塗りつぶす…Form2
が必要なくなってくる気もしますが???
> リージョンオブジェクト(Region)
こっちも結局同じことになると思うんだけど、塗りつぶし
の処理が発生する時点で Form が2つあっても意味がないと
いうか。。。
逆転の発想で Form1 が必要なくなるパターンが、最初に
Form1 の Image を一つの画像データとして Form2 が取得
してしまって、自身の移動に合わせて Form1 の Image を
表示している Form2 上の Picturebox の座標を移動させて
表示するとか。
フォームを2つ使用するなら Form2 は Form1 と同じ座標・
同じ大きさで、そこから動かすと面倒になりそう。どうせ
> タイトルバーを消しているため窓の移動ができない。
から Mouse のイベントで処理することになるだろうし、
移動させるのはフォームではなくて透明にする範囲のみ
の方が実現し易そうに思います。
ツイート | ![]() |