2009-03-16 5 views
0

私はキオスクアプリケーションを作成しています。私はそれをフルスクリーンを持っていると私は、フォーム上に直接描画しています:画像とwinformに関する質問

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 

すべてが細かい描画が、私は(任意の順序で、個別に、または一緒に)AltキーまたはTabキーを押す秒私が消えるを描いた長方形。私が関数を再び呼び出すと、それは再描画され、何のボタンを押してもそのままです。私の描画関数を呼び出す必要があるので、一度呼び出す必要がある何らかの.NET関数がありますか?

ありがとうございました。

答えて

2

OnPaintを上書きして絵を描いてください。必要に応じて再ペイントすることができます。現時点では、描画するものは画面下でのみ有効です無効にされます。

+0

OK、メソッドをオーバーライドに移動しました。 headerText変数をどのように渡す必要がありますか?グローバル変数? – Anders

+0

私はまだ同じ振る舞いをしています、私は私の元の計画に行き、パネルを作成するのではなく、四角形を描くことにします。とにかくこの方法で最終的な実装をより詳細に制御できるようになります。あなたの助けをありがとう。 – Anders

+0

申し訳ありませんが、私は別の場所にいました - はい、それはテキスト変数で動作するはずです。非常に驚いたのはうまくいきませんでした。そうすべき! –

関連する問題