private void RenderPreview() { var handle = SelectedWindow.Value.Handle; var(scaleX, scaleY) = (DpiService.Instance.CurrentDpi.ScaleX, DpiService.Instance.CurrentDpi.ScaleY); var rect = RobockUtil.AsRect(0, 0, _desktopWindowManager.Thumbnails[0].Size.Height, _desktopWindowManager.Thumbnails[0].Size.Width); if (SelectedAreaHeight.Value != 0) { rect = CalcRenderingRect(); } var left = PreviewAreaLeft.Value * scaleX; var top = PreviewAreaTop.Value * scaleY; var height = PreviewAreaHeight.Value * scaleY; var width = PreviewAreaWidth.Value * scaleX; if (_desktopWindowManager.Thumbnails[1].IsRendering) { _desktopWindowManager.Rerender(1, (int)left, (int)top, (int)height, (int)width, rect); } else { _desktopWindowManager.Start(1, handle, (int)left, (int)top, (int)height, (int)width, rect); } }
private RECT CalcRenderingRect() { // 描画サイズから、縮小された割合を計算 var multi = _desktopWindowManager.Thumbnails[0].Size.Height / (double)EditorAreaHeight.Value; // Grid と Image のズレが大きいと、描画領域がずれてしまうので、補正する var diff = new Size(EditorAreaLeft.Value - GridAreaLeft.Value, EditorAreaTop.Value - GridAreaTop.Value); return(RobockUtil.AsRect(SelectedAreaTop.Value - diff.Height, SelectedAreaLeft.Value - diff.Width, SelectedAreaHeight.Value, SelectedAreaWidth.Value, multi)); }