Как отобразить растровое изображение из элемента WPF, который имеет растровый эффект? - PullRequest
0 голосов
/ 03 июня 2010

Я могу отрендерить Visual в точечный рисунок с этим кодом:

        Rect bounds = VisualTreeHelper.GetDescendantBounds(target);
        RenderTargetBitmap renderBitmap = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);

        DrawingVisual visual = new DrawingVisual();
        using (DrawingContext context = visual.RenderOpen())
        {
            VisualBrush brush = new VisualBrush(target);bounds.Value.Size));
            context.DrawRectangle(brush, null, new Rect(new Point(), bounds.Value.Size));
        }
        renderBitmap.Render(visual);
        return renderBitmap;

Проблема в том, что если у Visual есть эффект растрового изображения, например, тени, то полученное изображение будет сжатым. Кажется, что он пытается вписать визуал с тенью в изображение размером с визуал без тени.

Ответы [ 2 ]

1 голос
/ 04 июня 2010

В большинстве случаев (например, падающая тень) фактическая визуализация эффекта выходит за пределы самого элемента. Опираясь на размер изображения ActualHeight и ActualWidth, вы получаете эффект сжатия, который вы видите. Лучшим решением было бы вместо этого использовать родительский контейнер, но это может потребовать изменения вашего макета. Вы также можете рассчитать дополнительные значения заполнения, чтобы добавить к размеру элемента, который будет компенсировать эффект рендеринга. Возможно получить эти значения, проверив свойства самого эффекта, и, возможно, потребуется также проб и ошибок.

0 голосов
/ 04 июня 2010

Эффект имеет набор свойств заполнения, и они используются для установки размера области визуализации, используемой эффектом - посмотрите, были ли они изменены, и, если да, отрегулируйте размер визуализируемого визуала. Взгляните на RenderTargetBitmap - Визуальный вектор в растровое изображение и статьи на WPF Workings

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...