2010-04-04 00:12:01 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
|
|
|
|
|
namespace Jellyfish.Library
|
|
|
|
|
{
|
|
|
|
|
public sealed partial class FrameRateCounter : UserControl
|
|
|
|
|
{
|
|
|
|
|
public FrameRateCounter()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
CompositionTarget.Rendering += OnCompositionTargetRendering;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnCompositionTargetRendering(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
_frameCount++;
|
|
|
|
|
|
|
|
|
|
long time = DateTime.UtcNow.Ticks;
|
|
|
|
|
if (time - _lastTime >= TimeSpan.TicksPerSecond)
|
|
|
|
|
{
|
|
|
|
|
_lastTime = time;
|
|
|
|
|
FrameRate = _frameCount;
|
|
|
|
|
_frameCount = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static readonly DependencyProperty FrameRateProperty = DependencyProperty.Register("FrameRate", typeof(int), typeof(FrameRateCounter),
|
|
|
|
|
new PropertyMetadata(0));
|
|
|
|
|
|
|
|
|
|
public int FrameRate
|
|
|
|
|
{
|
|
|
|
|
get { return (int)GetValue(FrameRateProperty); }
|
|
|
|
|
set { SetValue(FrameRateProperty, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int _frameCount;
|
|
|
|
|
private long _lastTime;
|
|
|
|
|
}
|
|
|
|
|
}
|