В отдельном потоке вывожу кадры, при этом измеряю фпс. При старте он равен примерно 120, во время работы снижается до 50. Можно как-то этого избежать и иметь высокий хороший фпс? Каковы причины происходящего?
Через поиск не нашел ничего похожего.
вот код:
Rectangle rect = new Rectangle(1, 1, 481, 320+20+1);
Rectangle footerRect = new Rectangle(1, 1, 481, 21);
Rectangle frameRect = new Rectangle(1+1, 21+1, 480, 320);
MemoryStream ms = new MemoryStream();
FileStream fs = new FileStream("C:\\1.jpg", FileMode.Open);
byte[] buf = new byte[fs.Length];
fs.Read(buf, 0, buf.Length);
ms = new MemoryStream(buf, 0, buf.Length);
Bitmap bmp = new Bitmap((Stream)ms);
TimeSpan ts = new TimeSpan();
DateTime startTime = DateTime.Now;
int j = 0;
double fps = 0;
Graphics g = Graphics.FromHwnd(thisHandle);
while (true)
{
if (ms.Length > 0)
{
g.DrawRectangle(new Pen(Brushes.Blue), rect);
g.FillRectangle(Brushes.Blue, footerRect);
g.DrawString(String.Format("{0} fps", fps), new Font("Arial", 10),
Brushes.White, new PointF(footerRect.X + 5, footerRect.Y + 1));
g.DrawImage(bmp, frameRect);
j++;
ts = DateTime.Now - startTime;
if (ts.Seconds >= 1)
{
startTime = DateTime.Now;
fps = (double)j;
j = 0;
}
}
}