Для этого вам нужны два bitmaps
и picturebox
. Первый из них является png
изображения, а второй picturebox
изображения:
Private pngImage, picBoxImage As Image
В случае загрузки формы инициализации два изображения:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
pngImage = Image.FromFile(FOLDER_PATH & "\completed.png") //load it once
picBoxImage = CType(pngImage.Clone, Image)
PictureBox1.Size = New Size(CInt(463/2), CInt(242/2))
PictureBox1.Parent = GroupBox6
PictureBox1.Image = picBoxImage
PictureBox1.Visible = False //you dont want it at the beggining
End Sub
суб показать PictureBox:
Private Sub ShowCompletedMessage()
Dim screenLocation As Point
Dim gr As Graphics
//you can pass these values as parameters in the sub if you want to make the code more generic
Dim x As Integer = CInt(((GroupBox6.Width/2) - (463/4)))
Dim y As Integer = 10
Dim width As Integer = CInt(463/2)
Dim height As Integer = CInt(242/2)
//Ensure that picturebox is not visible. If it is you don't need to take a screenshot
If PictureBox1.Visible = True Then
Return
End If
gr = Graphics.FromImage(picBoxImage)
//you need to transform the coordinates to screen ones
screenLocation = GroupBox6.PointToScreen(New Point(x, y))
//draw the portion of the screen to your bitmap
gr.CopyFromScreen(screenLocation.X, screenLocation.Y, 0, 0, New Size(width, height), CopyPixelOperation.SourceCopy)
//draw the png image on top
gr.DrawImage(pngImage, 0, 0, width, height)
PictureBox1.Location = New Point(x, y)
PictureBox1.BringToFront()
PictureBox1.Visible = True
gr.Dispose()
gr = Nothing
Return
End Sub
Каждый раз, когда вы хотите показать сообщение, вызовите вышеуказанный подраздел. Вы решаете, где и когда. Вам нужно, чтобы скрыть picturebox
если вам не нужно больше
PictureBox1.Visible = False
Вы хотите показать изображение в качестве наложения, когда пользователь завершил процесс и скрыть основные элементы управления? Я думаю, что проще использовать элемент управления PictureBox, который отображается вместо Groupbox, когда статус «Отменен» вместо рисования изображения в групповом поле. – Markus
@Markus, если я использую окно с картинкой, это непрозрачно, поэтому я рисую изображение на элементе управления, который будет удерживать его. но в моем случае txtbox и ярлык покрывают изображение. я просто хочу его нарисовать и, возможно, отправить его на фронт gropbox и другого элемента управления внутри группового ящика. – Muj
Есть два решения, о которых я могу думать. 1. Создайте многоуровневое окно и покажите его поверх элементов управления. 2. Сделайте снимок экрана, в котором будет отображаться изображение, и нарисуйте его на picbox, а затем нарисуйте png изображение –