public override void Unload() { base.Unload(); updateTimer.Stop(); updateTimer.Dispose(); imageTexture.Dispose(); imagePanel.Dispose(); updateTimer = null; imagePanel = null; statusStrip = null; visualizerCanvas = null; imageTexture = null; visualizerImage = null; }
public override void Load(IServiceProvider provider) { StatusStripEnabled = true; visualizerCanvas = new VisualizerCanvas { Dock = DockStyle.Fill }; statusStrip = new StatusStrip { Visible = false }; statusLabel = new ToolStripStatusLabel(); statusStrip.Items.Add(statusLabel); visualizerCanvas.RenderFrame += (sender, e) => RenderFrame(); visualizerCanvas.Load += (sender, e) => imageTexture = new NSK_IplImageTexture(); visualizerCanvas.Canvas.MouseClick += (sender, e) => statusStrip.Visible = StatusStripEnabled && e.Button == MouseButtons.Right ? !statusStrip.Visible : statusStrip.Visible; visualizerCanvas.Canvas.MouseMove += (sender, e) => UpdateStatus(); visualizerCanvas.Canvas.MouseDoubleClick += (sender, e) => { if (e.Button == MouseButtons.Left) { if (visualizerImage != null) { imagePanel.Parent.ClientSize = new Size(visualizerImage.Width, visualizerImage.Height); } } }; imagePanel = new Panel { Dock = DockStyle.Fill, Size = new Size(320, 240) }; imagePanel.Controls.Add(visualizerCanvas); imagePanel.Controls.Add(statusStrip); var visualizerService = (IDialogTypeVisualizerService)provider.GetService(typeof(IDialogTypeVisualizerService)); if (visualizerService != null) { updateTimer = new Timer(); updateTimer.Interval = TargetInterval; updateTimer.Tick += updateTimer_Tick; visualizerService.AddControl(imagePanel); updateTimer.Start(); } base.Load(provider); }