Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将标签控件另存为png图像_C#_.net_Wpf - Fatal编程技术网

C# 如何将标签控件另存为png图像

C# 如何将标签控件另存为png图像,c#,.net,wpf,C#,.net,Wpf,我想保存标签控件,但不知道如何保存它。 我试着在图形学课上画文本,但我画不出“均匀分配”。 有什么好办法吗 public Label makeLabel(string text, double width, double height, FontFamily fontFamily, FontStyle fontStyle, FontStretch fontStretch) { var label = new Label(); label.Width = width; la

我想保存标签控件,但不知道如何保存它。 我试着在图形学课上画文本,但我画不出“均匀分配”。 有什么好办法吗

public Label makeLabel(string text, double width, double height, FontFamily fontFamily, FontStyle fontStyle, FontStretch fontStretch)
{
    var label = new Label();
    label.Width = width;
    label.Height = height;
    label.FontFamily = fontFamily;
    label.FontStyle = fontStyle;
    label.FontStretch = fontStretch;
    label.Content = text;

    return label;
}

public void SavePicture(Label label)
{
    var path = "label.png";
    // I have no idea to save;
}
但您只能在显示标签后调用此方法。

public void SavePicture(标签标签)
{
var path=“label.png”;
变量宽度=标签宽度;
变量高度=标签高度;
var viewBox=新的viewBox();
var renderTargetBitmap=新的renderTargetBitmap((int)宽度,(int)高度,96,96,PixelFormats.Pbgra32);
var pngBitmapEncoder=新的pngBitmapEncoder();
viewBox.Child=标签;
viewBox.Measure(新尺寸(宽度、高度));
排列(新的矩形(0,0,宽度,高度));
UpdateLayout();
renderTargetBitmap.Render(viewBox);
pngBitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
使用(var fileStream=File.Create(path))
{
保存(文件流);
}
}

这可以在屏幕上不显示标签的情况下工作。

我尝试了这段代码,但这段代码生成了透明图像。我在构造函数中生成标签,并在网格加载事件后保存方法do。在
makeLabel
方法中设置标签背景:
label.Background=brusks.White为什么是标签而不是文本块?或者在DrawingVisual中使用更轻量级的格式化文本?它只是用文本创建位图吗?因为,我只知道创建文本的标签。我想创建具有宽度、高度、字体系列、字体样式、字体拉伸和文本内容的位图。
void SavePicture(FrameworkElement el)
{
    RenderTargetBitmap bitmap = new RenderTargetBitmap((int)el.ActualWidth, (int)el.ActualHeight, 96, 96, PixelFormats.Pbgra32);
    bitmap.Render(el);
    using (FileStream stream = File.Create(@"label.png"))
    {
        PngBitmapEncoder encoder = new PngBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(bitmap));
        encoder.Save(stream);
    }
}