private void refreshMagnifier() { Point center = MousePosition.GetValueOrDefault(new Point()); int radiusMagnifier = MagnifierRadius; double zoom = MagnifierZoom; if (!GetIsZoomEnabled()) { magnfier.Visibility = Visibility.Collapsed; return; } else { magnfier.Visibility = Visibility.Visible; } if (_currentBitmapData == null) { return; } int radius = (int)(radiusMagnifier / zoom); Stopwatch st = new Stopwatch(); st.Start(); var bitmapScaled = Helper.GetZoomedVersionOfRegion(_currentBitmapData, getMagnifierRegion(center, radiusMagnifier, zoom), zoom, zoom); var src = Helper.ImageSourceFromHBitmap(bitmapScaled); magnifierImg.Source = src; magnfier.RenderTransform = new MatrixTransform(1, 0, 0, 1, center.X - radiusMagnifier, center.Y - radiusMagnifier); magnfier.Clip = new EllipseGeometry(new Point(radiusMagnifier, radiusMagnifier), radiusMagnifier, radiusMagnifier); st.Stop(); System.Diagnostics.Debug.WriteLine("refreshing magnifier: " + st.ElapsedMilliseconds + " ms"); }