我在Scrollviewer中有一个Stackpanel,在其后面的代码中插入了Canvas元素。
每个画布元素都有一个图像和一些标签,可以在画布内部四处移动。 我想为每个画布中的每个标签创建一个Png图像。我的目标是稍后将这些Png图像插入到现有的pdf文件中。问题是我只得到黑色图像。
我已经用google和stackoverflow搜索过,但没有真正找到答案。
标签是按代码添加到“画布”的,而不是在xaml中创建的。我还尝试为每个画布(而不是标签)创建一个Png。第一个画布的图像已正确创建。但是第二个又是黑色的。
如果有人知道我在做什么错,我将非常感激。
foreach (Canvas canvas in StackPanel_Canvas_Container.Children)
{
foreach (object o in canvas.Children)
{
if (o.GetType().Equals(typeof(Label)))
{
Label label = (Label)o;
label.Background = Brushes.Transparent;
label.Foreground = Brushes.Black;
label.UpdateLayout();
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)label.ActualWidth, (int)label.ActualHeight, 96, 96, PixelFormats.Pbgra32);
bitmap.Render(label);
String path = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "created_images");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
String tmp = string.Empty;
do
{
tmp = System.IO.Path.Combine(path, $"img_{++i}.png");
} while (File.Exists(tmp));
using (FileStream stream = File.Create(tmp))
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
encoder.Save(stream);
}
}
}
}