我想将圆圈另存为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
时
顺便说一句:“ Kreis”是德语的“圆圈”
然后图像具有正确的大小,但其中不包含圆圈,因为圆圈在应用程序的右侧。而且它只是从左侧制作一个屏幕。
是否不仅可以为RenderTargetBitmap设置Width和Height,还可以通过某种方式设置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"/>
这是我收到的图像:
(如果单击图像,您会看到它不仅包含圆圈。我需要的是图像仅包含圆圈,因此图像的宽度/高度是图像的宽度/高度。圈。
答案 0 :(得分:0)
在以下问题中尝试ILIA BROUDNO的答案:Snapshot of an WPF Canvas Area using RenderTargetBitmap
您的XAML显示圆形包含在网格中,因为附加属性Grid.Column设置为1。这使我保证圆形的尺寸相对于网格甚至是窗口都绘制。 因此,从Kreis元素创建VisualBrush,然后在0,0位置显式绘制此VisualBrush可能会解决您的问题。