Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
        }