首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >RenderTargetBitmap呈现整个屏幕,而不是仅呈现视觉

RenderTargetBitmap呈现整个屏幕,而不是仅呈现视觉
EN

Stack Overflow用户
提问于 2018-10-24 05:45:35
回答 1查看 212关注 0票数 -1

我想把一个圆保存为png。

这是使用的代码:

代码语言:javascript
复制
        RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)Width, (int)Height, 96, 96, PixelFormats.Pbgra32);
        renderTargetBitmap.Render(kreis);

        PngBitmapEncoder pngImage = new PngBitmapEncoder();
        pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));

        if (File.Exists(dateipfad + textBox.Text + ".png"))
            File.Delete(dateipfad + textBox.Text + ".png");

        using (Stream fileStream = File.Create(dateipfad + textBox.Text + ".png"))
        {
            pngImage.Save(fileStream);
        }

但是,它始终保存一个525x350的png文件(带有圆圈)。

我想要的是,png文件的大小与圆的大小相同。

但是当我将WidthHeight更改为Kreis.WidthKreis.Height

顺便说一句,“

”在德语中是“圈”的意思。

则图像具有正确的大小,但其中不包含圆,因为圆位于应用程序的右侧。它只是从左边做了一个屏幕。

是否可以不仅设置RenderTargetBitmap的宽度和高度,还可以以某种方式设置startX和startY?

编辑:

这是圆的XAML:

代码语言:javascript
复制
       <Ellipse x:Name="kreis" Grid.Column="1" HorizontalAlignment="Center" Height="{Binding ElementName=slider, Path=Value}" Margin="0" Stroke="#FF8F8FF9" VerticalAlignment="Center" Width="{Binding ElementName=slider, Path=Value}" Fill="#FF5555D1" StrokeThickness="2"/>

这是我收到的图片:

(如果您单击图像,您可以看到它不仅包含圆。我需要的是图像只包含圆,所以图像的宽/高就是圆的宽/高。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 06:22:51

在这个问题中尝试ILIA BROUDNO的答案:Snapshot of an WPF Canvas Area using RenderTargetBitmap

您的XAML显示圆包含在网格中,因为附加的属性Grid.Column被设置为1。这使我断定圆的大小是相对于网格甚至是相对于窗口绘制的。因此,从Kreis- VisualBrush创建一个元素,然后显式地在位置0,0上绘制这个VisualBrush可能会解决您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52958266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档