снжение фпс при выводе jpeg поткока кадров GDI
От: Аноним  
Дата: 24.11.09 09:04
Оценка:
В отдельном потоке вывожу кадры, при этом измеряю фпс. При старте он равен примерно 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;
                    }
                }
            }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.