Je suis en train de créer une application Kiosque. Je l'ai en plein écran et je dessine directement sur le formulaire :
Private Function CreateHeader(ByVal headerText As String) As Boolean
Try
Dim oGFX As Graphics = Graphics.FromHwnd(hwnd:=_oP.Handle)
Dim oRect As Rectangle = New Rectangle(x:=0, y:=0, Width:=_screenSize.X, Height:=150)
Dim oBMP As New Bitmap(GetEmbeddedResourceStream("Kiosk.logo.jpg"))
Dim oBrush As Brush = New SolidBrush(Color.FromArgb(red:=0, green:=0, blue:=153))
oGFX.FillRectangle(brush:=oBrush, rect:=oRect)
oGFX.DrawImage(image:=oBMP, _
x:=0, _
y:=0, _
width:=oBMP.Width, _
height:=oBMP.Height)
If Not String.IsNullOrEmpty(headerText) Then
Dim oFont As New Font("Impact", 48, FontStyle.Regular)
Dim g As Graphics = Me.CreateGraphics()
Dim oStringSize As SizeF = g.MeasureString(headerText, oFont)
g = Nothing
oGFX.DrawString(s:=headerText, _
font:=oFont, _
brush:=Brushes.White, _
x:=(oRect.Width - Math.Round(oStringSize.Width, 0)) / 2, _
y:=(oRect.Height - Math.Round(oStringSize.Height, 0)) / 2)
End If
Return True
Catch ex As Exception
Return False
End Try
End Function
Tout se dessine bien, mais dès que j'appuie sur Alt ou Tab (individuellement ou ensemble, dans n'importe quel ordre), le rectangle que j'ai dessiné disparaît. Si j'appelle à nouveau la fonction, il se redessine et reste quel que soit le bouton sur lequel j'appuie. Existe-t-il une sorte de fonction .NET que je dois appeler pour que ma fonction de dessin ne soit appelée qu'une seule fois ?
Gracias.