Расположить один PictureBox на другом с сохранением прозрачности

Toni_Rokamora

На одном пикчабоксе рисуется график. Хочу сверху наложить второй пикчабокс на котором будет рисоваться горизонтальная линия в месте наведении курсора. При задании второму пикчабоксу backcolor - transparent, фон получается черным.
Private Sub PictureBox6_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox6.MouseMove
        Dim lx As New Point()
        Dim ly As New Point()
        Dim Pen2 As New Pen(Color.Red, 2)
        If wlg Is Nothing Then
        Else
            'Задаем начальные точки координат
            lx.X = e.X
            lx.Y = e.Y
            'Точки для ly должны быть такие же
            ly = lx
            Graph2 = Me.PictureBox6.CreateGraphics()
            Graph2.Clear(Color.Transparent)
            Graph2.DrawLine(Pen2, 0, lx.Y, PictureBox6.Height, lx.Y)
           End If
    End Sub
Подобная тема уже была, но никак не могу допетрить.
4 ответа

Toni_Rokamora

Попробовал добавить вот эти строчки, все равно черный фон.PictureBox6.Location = New Point(0, 0) PictureBox6.Parent = PictureBox5


Toni_Rokamora

Toni_Rokamora, А что мешает сразу рисовать эту линию, там где график рисуется?


Toni_Rokamora

Эта линия движется вместе с курсором, вверх - вниз. При этом она каждый раз стирается и рисуется в новом месте. Из-за этого график тоже сотрется. Нужно чтобы график остался.


Toni_Rokamora

При клике по PictureBox1 (здесь же и график) рисуется новая горизонтальная линия и удаляется старая.
Private pp As Point
Private drLine As Boolean 
Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
        drLine = True
        If pp <> Nothing Then
            PictureBox1.Invalidate()
        End If
        pp = e.Location
        PictureBox1.Invalidate()
    End If
End Sub
Private Sub PictureBox1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    drLine = False
End Sub
Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms. PaintEventArgs) Handles PictureBox1.Paint
'...
    If drLine Then
        Dim pt1 As New Point(0, pp.Y)
        Dim pt2 As New Point(PictureBox1.Width, pp.Y)
        e.Graphics.DrawLine(Pens.Red, pt1, pt2)
    End If
'...
End Sub