我想把一个圆保存为png。
这是使用的代码:
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文件的大小与圆的大小相同。
但是当我将Width
和Height
更改为Kreis.Width
和Kreis.Height
时
顺便说一句,“
”在德语中是“圈”的意思。
则图像具有正确的大小,但其中不包含圆,因为圆位于应用程序的右侧。它只是从左边做了一个屏幕。
是否可以不仅设置RenderTargetBitmap的宽度和高度,还可以以某种方式设置startX和startY?
编辑:
这是圆的XAML:
<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"/>
这是我收到的图片:
(如果您单击图像,您可以看到它不仅包含圆。我需要的是图像只包含圆,所以图像的宽/高就是圆的宽/高。
发布于 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可能会解决您的问题。
https://stackoverflow.com/questions/52958266
复制相似问题