Ich erstelle eine Kiosk-Anwendung. Ich habe es Vollbild- und Ich zeichne direkt auf dem Formular:Frage zu Bildern und Winforms
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
Alles zieht in Ordnung, aber die zweit Ich drücke Alt oder Tab (einzeln oder zusammen in beliebiger Reihenfolge) das Rechteck I schwindet zog. Wenn ich die Funktion erneut aufrufen, wird es neu gezeichnet und bleibt egal, welche Taste ich drücke. Gibt es irgendeine Art von .NET-Funktion, die ich aufrufen muss, damit meine Zeichenfunktion nur einmal aufgerufen werden muss?
Danke.
OK, ich habe die Methode in den Override verschoben. Wie sollte ich die HeaderText Variable übergeben? Globale Variable? – Anders
Ich bekomme immer noch das gleiche Verhalten, ich denke, ich werde einfach mit meinem ursprünglichen Plan gehen und Paneele erstellen, anstatt Rechtecke zu zeichnen. Ich werde am Ende mehr Kontrolle über die endgültige Implementierung auf diese Weise haben. Danke für Ihre Hilfe. – Anders
Sorry, ich war woanders - ja, es sollte mit einer Textvariablen arbeiten. Sehr überrascht, dass es nicht funktioniert hat; es sollte! –