private void CoerceOptimalImageForSize(Size size) { if (_optimalImageForSize != null) return; var frame = Source as BitmapFrame; var num1 = (int) size.LogicalToDeviceUnits().Width; var num2 = -1; if (frame != null) { if (frame.Decoder == null) return; foreach (var bitmapFrame in frame.Decoder.Frames) { var pixelWidth = bitmapFrame.PixelWidth; if (pixelWidth == num1) { _optimalImageForSize = bitmapFrame; break; } if (pixelWidth > num1) { if (num2 >= num1 && pixelWidth >= num2) continue; num2 = pixelWidth; _optimalImageForSize = bitmapFrame; } else if (pixelWidth > num2) { num2 = pixelWidth; _optimalImageForSize = bitmapFrame; } } } else _optimalImageForSize = Source; }
/// <summary> /// Gets the actual size of the device. /// </summary> /// <param name="element">The element.</param> /// <returns>Size.</returns> public static Size GetDeviceActualSize(this FrameworkElement element) { Size size = new Size(element.ActualWidth, element.ActualHeight); return size.LogicalToDeviceUnits(); }