public static BitmapSource Render(this PdfDocumentWrapper doc, int page, double factor, bool fixDpi = true) { var scale = DisplayDeviceHelper.GetCurrentScaleFactor(); var dpiX = fixDpi ? scale.Horizontal * DisplayDeviceHelper.DefaultDpi : 96; var dpiY = fixDpi ? scale.Vertical * DisplayDeviceHelper.DefaultDpi : 96; Bitmap bitmap; lock (LockObj) { var size = doc.PdfDocument.PageSizes[page]; var realWidth = (int)Math.Round(size.Width * scale.Horizontal * factor); var realHeight = (int)Math.Round(size.Height * scale.Vertical * factor); bitmap = doc.PdfDocument.Render(page, realWidth, realHeight, dpiX, dpiY, PdfRotation.Rotate0, PdfRenderFlags.LimitImageCacheSize | PdfRenderFlags.LcdText | PdfRenderFlags.Annotations | PdfRenderFlags.ForPrinting, true) as Bitmap; } var bs = bitmap?.ToBitmapSource(); bitmap?.Dispose(); bs?.Freeze(); return(bs); }
public override Task <BitmapSource> GetRenderedFrame(int index) { var fullSize = Meta.GetSize(); return(new Task <BitmapSource>(() => { var settings = new MagickReadSettings { BackgroundColor = MagickColors.None, Defines = new DngReadDefines { OutputColor = DngOutputColor.SRGB, UseCameraWhitebalance = true, DisableAutoBrightness = false } }; try { using (var mi = new MagickImage(Path.LocalPath, settings)) { if (SettingHelper.Get("UseColorProfile", false, "QuickLook.Plugin.ImageViewer")) { if (mi.ColorSpace == ColorSpace.RGB || mi.ColorSpace == ColorSpace.sRGB || mi.ColorSpace == ColorSpace.scRGB) { mi.SetProfile(ColorProfile.SRGB); if (ContextObject.ColorProfileName != null) { mi.SetProfile(new ColorProfile(ContextObject.ColorProfileName)); // map to monitor color } } } mi.AutoOrient(); if (mi.Width != (int)fullSize.Width || mi.Height != (int)fullSize.Height) { mi.Resize((int)fullSize.Width, (int)fullSize.Height); } mi.Density = new Density(DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Horizontal, DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Vertical); var img = mi.ToBitmapSourceWithDensity(); img.Freeze(); return img; } } catch (Exception e) { ProcessHelper.WriteLog(e.ToString()); return null; } })); }
private Icon GetTrayIconByDPI() { var scale = DisplayDeviceHelper.GetCurrentScaleFactor().Vertical; if (!App.IsWin10) { return(scale > 1 ? Resources.app : Resources.app_16); } return(OSThemeHelper.SystemUsesDarkTheme() ? (scale > 1 ? Resources.app_white : Resources.app_white_16) : (scale > 1 ? Resources.app_black : Resources.app_black_16)); }
private Rect ResizeAndCentreNewWindow(Size size) { var desktopRect = WindowHelper.GetCurrentDesktopRectInPixel(); var scale = DisplayDeviceHelper.GetCurrentScaleFactor(); var pxSize = new Size(scale.Horizontal * size.Width, scale.Vertical * size.Height); var pxLocation = new Point( desktopRect.X + (desktopRect.Width - pxSize.Width) / 2, desktopRect.Y + (desktopRect.Height - pxSize.Height) / 2); // return absolute location and relative size return(new Rect(pxLocation, size)); }
public static void DpiHack(BitmapSource img) { // a dirty hack... but is the fastest var newDpiX = (double)DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Horizontal; var newDpiY = (double)DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Vertical; var dpiX = img.GetType().GetField("_dpiX", BindingFlags.NonPublic | BindingFlags.Instance); var dpiY = img.GetType().GetField("_dpiY", BindingFlags.NonPublic | BindingFlags.Instance); dpiX?.SetValue(img, newDpiX); dpiY?.SetValue(img, newDpiY); }
public GlassLayer() { InitializeComponent(); var scale = DisplayDeviceHelper.GetCurrentScaleFactor(); noiseBrush.Viewport = new Rect(new Size( noiseBrush.ImageSource.Width / scale.Horizontal, noiseBrush.ImageSource.Height / scale.Vertical)); LayoutUpdated += (sender, e) => { BindingOperations.GetBindingExpressionBase(brush, TileBrush.ViewboxProperty)?.UpdateTarget(); }; }
public GifProvider(Uri path, MetaProvider meta, ContextObject contextObject) : base(path, meta, contextObject) { if (!ImageAnimator.CanAnimate(Image.FromFile(path.LocalPath))) { _nativeProvider = new NativeProvider(path, meta, contextObject); return; } _fileHandle = (Bitmap)Image.FromFile(path.LocalPath); _fileHandle.SetResolution(DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Horizontal, DisplayDeviceHelper.DefaultDpi * DisplayDeviceHelper.GetCurrentScaleFactor().Vertical); Animator = new Int32AnimationUsingKeyFrames { RepeatBehavior = RepeatBehavior.Forever }; Animator.KeyFrames.Add(new DiscreteInt32KeyFrame(0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(0)))); Animator.KeyFrames.Add(new DiscreteInt32KeyFrame(1, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(10)))); Animator.KeyFrames.Add(new DiscreteInt32KeyFrame(2, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(20)))); }