タイトル | : Re^7: pictureBoxの重なり |
記事No | : 6793 |
投稿日 | : 2008/01/11(Fri) 09:14 |
投稿者 | : y4yama |
> 上記の方法でも、ピクチャーボックスはダメでした。 たしかに・・UserControl1同士が重なると、Regionで上のほうが優先判断されてしまって 下のUserControl1には描画してくれないです
> ごり押しみたいなプログラムで嫌だなーと思っていたのですが。 そうでもないと思いますよ。今動かすべき1つの○だけDragで再描画する(またはPictureBoxでも可能)・その他はBitmap1に描きこんでおく。 他のを移動したい時は、そいつを1つの(PictureBoxに変えてもいいし)今動かすべきものにして、同じしょりが出来る。Bitmapは○を全く描いてないBitmap0も準備しておいて、必要に応じて○を何個か書き込んだBitmap1を広い全面に見せる・・・とか・・
ところで、ピクチャーボックスではダメですが、Form2だとOKでした Form2を、○1個のアイコンのように扱って Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim g As Graphics = e.Graphics g.DrawEllipse(Pens.Blue, 20, 20, 17, 17) End Sub .TopMost=True, TransparencyKeyをBackColorにして、FormBorderStyle=Noneで枠なし としました。
Public Class Form1 Dim f21 As New Form2 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Show() f21.Show() f21.Top = Me.Top + 60 End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f22 As New Form2 f22.Show() f22.Top = f21.Top + 10 f22.Left = f21.Left + 3 End Sub
これで、うまく○が両方でました。UserControl1でも何かヒミツを探れば、出来るんでしょうが・・ベテランの方のアドバイスをお待ちします・・・ f21,f22は親のないFormですから、Form1を移動したときには、それなりに制御してやらないと連動しませんし、あとf21はマウスでピックするのは無理でしょう・・でも、表示だけ考えれば使える方法かも知れませんネ
|