tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: pictureBoxの重なり
投稿日: 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はマウスでピックするのは無理でしょう・・でも、表示だけ考えれば使える方法かも知れませんネ

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。