簡體   English   中英

如何將標簽控件保存為png圖像

[英]How to save label control as png image

我想保存我的標簽 Control,但我不知道要保存它。 我嘗試在 Graphics 類中繪制文本,但無法繪制“均勻分配”。 有什么好辦法嗎?

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(Label label)
{
    var path = "label.png";

    var width = label.Width;
    var height = label.Height;

    var viewBox = new Viewbox();
    var renderTargetBitmap = new RenderTargetBitmap((int)width, (int)height, 96, 96, PixelFormats.Pbgra32);
    var pngBitmapEncoder = new PngBitmapEncoder();

    viewBox.Child = label;
    viewBox.Measure(new Size(width, height));
    viewBox.Arrange(new Rect(0, 0, width, height));
    viewBox.UpdateLayout();

    renderTargetBitmap.Render(viewBox);

    pngBitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));

    using (var fileStream = File.Create(path))
    {
        pngBitmapEncoder.Save(fileStream);
    }
}

這無需在屏幕上顯示標簽即可工作。

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

但是只有在Label顯示出來之后才能調用這個方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM