0 votes

Question concernant les images et les winforms

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.

2voto

Marc Gravell Points 482669

Vous devriez faire votre peinture en surchargeant OnPaint - vous pourrez alors repeindre si nécessaire. Pour l'instant, tout ce que vous dessinez n'est valable que si l'écran est invalidé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X