WPF размытая маска непрозрачности и преобразование макета масштаба - PullRequest
0 голосов
/ 13 февраля 2020

В WPF у меня есть изображение, которое я пытаюсь применить размытую маску непрозрачности со следующим кодом:

            var target = new DrawingVisual
            {
                Effect = new BlurEffect
                {
                    Radius = 50
                }
            };

            using (var targetDC = target.RenderOpen())
                targetDC.DrawGeometry(Brushes.White, null, new RectangleGeometry(new Rect(image.RenderSize)));

            image.OpacityMask = new VisualBrush(target)
            {
                Transform = new ScaleTransform(0.75, 0.75, image.RenderSize.Width / 2, image.RenderSize.Height / 2)
            };

, который достигает желаемого эффекта

Однако, применяя следующие LayoutTransform к изображению:

        <Image.LayoutTransform>
            <ScaleTransform ScaleX="5" ScaleY="5" CenterX=".5" CenterY=".5" />
        </Image.LayoutTransform>

Я получаю совсем другой результат

Как я могу сделать так, чтобы размытие Эффект кажется стабильным после масштабирования?

1 Ответ

0 голосов
/ 14 февраля 2020

Не уверен, что именно идет не так с вашей OpacityMask. Примерно так должно масштабироваться по желанию:

<Image Source="...">
    <Image.OpacityMask>
        <VisualBrush>
            <VisualBrush.Visual>
                <Rectangle Fill="Black" Width="10" Height="10">
                    <Rectangle.Effect>
                        <BlurEffect Radius="1"/>
                    </Rectangle.Effect>
                </Rectangle>
            </VisualBrush.Visual>
        </VisualBrush>
    </Image.OpacityMask>
    <Image.LayoutTransform>
        <ScaleTransform ScaleX="5" ScaleY="5"/>
    </Image.LayoutTransform>
</Image>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...