Сохранение растрового изображения экрана OpenTK, но текст QuickFont не отображается? - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть текстурированная коробка в моем окне.Сверху этого поля печатается текст с использованием QuickFont.Поскольку добавляется много текста, а не все сразу, для обновления этого экрана требуется время.Чтобы сэкономить время и ресурсы, я хочу скрепить окно с текстом и использовать его в качестве текстуры, которая намного быстрее, потому что после первого рендеринга ничего не разбирается.сохраните его в растровое изображение, но на экране нет текста.(К вашему сведению, это должен быть 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

1 Ответ

0 голосов
/ 28 декабря 2011

Я случайно наткнулся на ответ. При нажатии на кнопку, которая дважды захватывает крышку экрана, вторая отображает правильную информацию, включая текст.

Несмотря на то, что вызов скриншота происходит после того, как текст «предположительно» отрендерен и буферы были поменяны местами, он все еще захватывает снимок экрана с того, что на экране в момент запуска события OnClick. *

Решение, которое я рассмотрю, это просто сделать логическое значение (готово) и установить его в значение true в конце сегмента рендеринга текста и иметь

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

Или, альтернативно, иметь переменную-счетчик, которая подсчитывает каждую проанализированную строку текста, и когда она достигает максимума (т.е. все обработано), она вызывает метод снимка экрана.)

...