/// <summary> /// Updates the thumbnail options and the right-click label. /// </summary> private void UpdateThubmnail() { if (_thumbnail != null && !_thumbnail.IsInvalid) { try { //Get thumbnail size and attempt to fit to control, with padding Size sourceSize = ThumbnailPixelSize; _thumbnailSize = sourceSize.Fit(Size); _padWidth = (Size.Width - _thumbnailSize.Width) / 2; _padHeight = (Size.Height - _thumbnailSize.Height) / 2; System.Diagnostics.Debug.WriteLine("Fitting {0} inside {1} as {2}. Padding {3},{4}.", sourceSize, Size, _thumbnailSize, _padWidth, _padHeight); var target = new Rectangle(_padWidth, _padHeight, _thumbnailSize.Width, _thumbnailSize.Height); Rectangle source = (_regionEnabled) ? _currentRegion.ComputeRegionRectangle(_thumbnail.GetSourceSize()) : new Rectangle(Point.Empty, _thumbnail.GetSourceSize()); _thumbnail.Update(target, source, ThumbnailOpacity, true, true); } catch { //Any error updating the thumbnail forces to unset (handle may not be valid anymore) UnsetThumbnail(); return; } } }