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);
}
}