フォームのデザインでレイヤー
- 題名: フォームのデザインでレイヤー
- 著者: ぱーやん
- 日時: 2004/03/11 17:08:13
- ID: 2986
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: フォームのデザインでレイヤー
- 著者: ぱーやん
- 日時: 2004/03/11 17:35:07
- ID: 2987
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: フォームのデザインでレイヤー
- 著者: ぱーやん
- 日時: 2004/03/12 15:52:16
- ID: 3017
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: フォームのデザインでレイヤー
- 著者: ぱーやん
- 日時: 2004/03/12 15:53:04
- ID: 3018
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
フォームデザインでフォーム上に配置したピクチャーボックスやパネルはレイヤー的に階層を決めれるのでしょうか?
例えば一番上に配置したピクチャーボックスをtransparent にしてそこに描画をしながらその下に配置されたピクチャーボックス画像を見る事は可能かという質問です。
線の描画プログラムで 以下のコードを書いたのですが マウスが動いている時にそのマウスの軌跡を追うようにリフレッシュをかけているのですが、リフレッシュをかけるとマウスが動いている時に既に書かれた線が一時的に消えてしまいます。だったらピクチャーボックスの2層もしくはピクチャーボックスとパネルを重ねた上で描画を行えばいいかな〜と思って書き出したのですが、レイヤー構造に出来ない為にうまく行きません。レイヤーでなくてもいいのですがなんか解決策がありましたら教えてください。
'マウスダウン時の点
Dim StartP() As Point
'マウスアップ時の点
Dim EndP() As Point
Dim CountA As Long = -1
Dim CountB As Long
Dim StLine As Boolean = False
Dim gp As New Pen(Color.Green, 1)
Dim p As New Pen(Color.Black, 1)
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim TempP As Point
'直線の描画
If StLine = True Then
If e.Button = MouseButtons.Left Then
CountA = CountA + 1
ReDim Preserve StartP(CountA)
StartP(CountA) = New Point(e.X, e.Y)
ListBox1.Items.Add("StartS")
ListBox1.Items.Add(StartP(CountA))
End If
End If
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Label1.Text = e.X
Label2.Text = e.Y
Dim TempP As Point()
Dim G2 As Graphics = PictureBox1.CreateGraphics
Dim i As Integer
Dim A As Point, B As Point
If e.Button = MouseButtons.Left Then
ReDim Preserve TempP(CountA)
TempP(CountA) = New Point(e.X, e.Y)
PictureBox1.Refresh()
A = StartP(CountA)
B = TempP(CountA)
End If
G2.DrawLine(gp, A, B)
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
Dim TempP As Point
Dim i As Long
Dim G3 As Graphics = PictureBox1.CreateGraphics
'直線の描画
If StLine = True Then
If e.Button = MouseButtons.Left Then
ReDim Preserve EndP(CountA)
EndP(CountA) = New Point(e.X, e.Y)
ListBox1.Items.Add("EndS")
ListBox1.Items.Add(EndP(CountA))
End If
End If
For i = 0 To CountA
G3.DrawLine(p, StartP(i), EndP(i))
Next
End Sub
End Class