フォームの内容を隠し、別フォームが重なった所のみ隠された内容を表示させるには?


アリル  2007-05-23 02:34:38  No: 136466

初めて質問させていただきます。
開発環境はVB.netです。

Form1にはいくつかのLabelが配置されています。
Form1の内容を隠した状況で、Form1より小さいサイズのForm2(サイズは可変)を用意し、重なった部分のみForm1に配置されたLabelの内容を入手(操作)できるコードを作成したいと思っています。

ご教授よろしくお願いいたします。


特攻隊長まるるう  2007-05-23 03:07:53  No: 136467

技術系掲示板においては、自分で下調べをし、できなかったにしろ
どういったことを試して、なぜ上手くいかなかったかくらいは説明
します。

上記の質問文にはそれがありません。
何の技術的な見通しもなく、仕様のみ書いて丸投げしているため、
仕事の依頼をしているのと同等です。そうであるなら、しかるべき
場所でお金を支払い、プログラマを雇って作成してもらうようにして
ください。


アリル  2007-05-23 19:03:01  No: 136468

特攻隊長まるるうさん
ご指摘ありがとうございます。質問文が不足していて、すみませんでした。
追記させていただきます。

初めにForm2をTransparencyKeyを用いて透過させ実現しようとしたのですが、
問題①タイトルバーを消しているため窓の移動ができない。
問題②Form1を隠しきることができない。
という問題に突き当たりました。
次に、リージョンオブジェクト(Intersectにより重なった部分のみ有効にする)を用いて解決しようとしたのですが、Form1を隠すことはできそうですが、
問題③透過しているわけではないので、Form1を操作できない。
といった問題に突き当たってしまいました。

この2つの手法を組み合わせればうまくいきそうな感じもするのですが、どう実現すればいいか分かりません。

下図を隠した状況で、重ねた窓から下図の情報を拾う方法はないでしょうか。
よろしくお願いします。


我龍院  2007-05-23 21:51:12  No: 136469

>タイトルバーを消しているため窓の移動ができない。
MouseDownとMouseMoveメソドを使えば間単にできるのでは。

>Form1を隠しきることができない。
透過してるんだから、隠しきることはできないのでは。

>下図を隠した状況で、重ねた窓から下図の情報を拾う方法はないでしょうか。
LabelのTextを拾うんだったら隠す隠さないは無関係では。


特攻隊長まるるう  2007-05-24 02:22:34  No: 136470

まぁ、丸いかどうかは書いてありませんが、サーチライトみたい
なのを作りたいんじゃないかと予想してます。が、単純な方法
は思いつきませんね。

> 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 のイベントで処理することになるだろうし、
移動させるのはフォームではなくて透明にする範囲のみ
の方が実現し易そうに思います。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加