2011-12-22 37 views
0

私は自分のウィンドウにテクスチャボックスを持っています。このボックスの上にQuickFontを使用してテキストが印刷されます。一度に追加するのではなく、たくさんのテキストが追加されているので、この画面を更新するのに時間がかかります。時間とリソースを節約するために、テキストでボックスをスクリーンキャプチャし、最初のレンダリング後に解析するものがないため、はるかに高速なテクスチャとして使用します。OpenTK画面のビットマップを保存していますが、QuickFontのテキストが表示されません。

スクリーンキャプチャ自体にglControlを取得し、ビットマップに保存できますが、画面にテキストはありません。 (F.Y.Iこれは薬局ラベルの印刷物のWYSIWYGレンダリングであるはずです)

テキストも保存する方法はありますか?

  if (GraphicsContext.CurrentContext == null) 
      throw new GraphicsContextException(); 

     Bitmap bmp = new Bitmap(frm1.ClientSize.Width, frm1.ClientSize.Height); 
     System.Drawing.Imaging.BitmapData data = 
      bmp.LockBits(frm1.ClientRectangle, System.Drawing.Imaging.ImageLockMode.WriteOnly, 
      System.Drawing.Imaging.PixelFormat.Format24bppRgb); 
     GL.ReadPixels(0, 0, frm1.ClientSize.Width,frm1.ClientSize.Height, 
      OpenTK.Graphics.OpenGL.PixelFormat.Bgr, PixelType.UnsignedByte, data.Scan0); 
     bmp.UnlockBits(data); 

     bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); 
     bmp.Save("Move.bmp", ImageFormat.Bmp); 
     bmp.Dispose(); 

enter image description here

答えて

0

私が誤って答えにつまずきました。スクリーンキャップをつかむボタンを2回クリックすることで、テキストを含む正しい情報が表示されました。

テキストが「おそらく」レンダリングされ、バッファがスワップされた後にスクリーンショットが呼び出されたとしても、OnClickイベントが発生した時点で画面上に表示されているものからスクリーンショットを取得しています。

私はちょうどブール(完成品)を作り、セグメントを描画するテキストの最後にtrueに設定し、カウンタ変数を持っている代わりに

while (Finished = true){ Do bitmap stuff here }

かを持っているになります解決策という解析されたテキストの行ごとにカウントアップされ、最大値に達すると(IEのすべてがレンダリングされます)、グラブのスクリーンショットメソッドが呼び出されます。

関連する問題