Files
cms_thermo_active/ThermalImageStreamerDemo/PlaybackForm.cs
T
2021-02-08 19:49:01 +01:00

86 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Flir.Atlas.Image;
namespace ThermalImageStreamerDemo
{
// Simple playback of a SEQ (radiometric data) file.
// Also see IRImageReaderDemo on how to open Thermal image files.
public partial class PlaybackForm : Form
{
private ThermalImageFile _imageFile;
private string Path { get; set; }
private bool IsDirty { get; set; }
readonly Timer _timer = new Timer();
public PlaybackForm(string path)
{
Path = path;
InitializeComponent();
}
private void PlaybackForm_Load(object sender, EventArgs e)
{
_imageFile = new ThermalImageFile(Path);
_imageFile.Changed += _imageFile_Changed;
pictureBox1.Image = _imageFile.Image;
if (_imageFile.ThermalSequencePlayer.Count() > 1)
{
_timer.Interval = 20;
_timer.Tick += _timer_Tick;
_timer.Start();
}
}
void _timer_Tick(object sender, EventArgs e)
{
if (!IsDirty) return;
IsDirty = false;
_imageFile.EnterLock();
try
{
pictureBox1.Image = _imageFile.Image;
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
throw;
}
finally
{
_imageFile.ExitLock();
}
}
void _imageFile_Changed(object sender, ImageChangedEventArgs e)
{
IsDirty = true;
}
private void buttonPlay_Click(object sender, EventArgs e)
{
_imageFile.ThermalSequencePlayer.Play();
}
private void buttonStop_Click(object sender, EventArgs e)
{
_imageFile.ThermalSequencePlayer.Stop();
}
private void buttonPause_Click(object sender, EventArgs e)
{
_imageFile.ThermalSequencePlayer.Pause();
}
private void PlaybackForm_FormClosing(object sender, FormClosingEventArgs e)
{
_timer.Stop();
}
}
}