C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 58 を表示中)
■32952 / )  VistaとXpの違い。透過フォームについて
□投稿者/ chana (5回)-(2009/02/18(Wed) 09:42:41)

分類:[VB.NET/VB2005 以降] 

おはようございます。
WindowsVista+VB2005で開発しております。

メインフォーム上に透明なフォームを出して、見た目ではメインフォーム上に線を引く様なソフトを作成しました。
透明なフォームにPictureboxを貼ってマウスによる線引きをしています。

Vistaでは問題なく動くのですが、XPでテストしたところ透明なフォームにすると
透明なフォームにフォーカスが入って来なくなります。
当然ですがMouseDown、MouseMoveも来ないので線が引けません。
試しに透過を止めるとフォーカスは入ってきます。

ちなみに、Opacityで薄くしてやってみましたが線は引けますが全部が薄いのでNGでした。

OSによる違いはあるかと思いますが、この問題を解決するにはどんな手があるか知恵を貸して頂けませんでしょうか?


Public frmP As New frmPaint() ---->透明なフォーム

<Main Form_Load>
Me.AddOwnedForm(frmP)
'フォームをモードレスで表示する
frmP.Show()



<frmP Form_Load>
'フォームの境界線をなくす
Me.FormBorderStyle = FormBorderStyle.None
'大きさを適当に変更
Me.Size = New Size(frm1X, frm1Y)
Me.Location = New Point(frmPicPoint.X, frmPicPoint.Y)

'画像を読み込む
Dim bmp As New Bitmap("form.bmp")
'透明にする色
Dim transColor As Color = bmp.GetPixel(0, 0)
'画像を透明にする
bmp.MakeTransparent(transColor)
'背景画像を指定する
Me.BackgroundImage = bmp
'背景色を指定する
Me.BackColor = transColor
'透明を指定する
Me.TransparencyKey = transColor --->ここをコメントにすればフォーカスは来ますが透明で無くなってしまいます。



どうぞ宜しくお願いします。


返信 編集キー/


管理者用

- Child Tree -