国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

WPF學(xué)習(xí)06:轉(zhuǎn)換控件內(nèi)容為可存儲圖片

2019-11-14 16:05:04
字體:
供稿:網(wǎng)友

    在圖形軟件中,我們經(jīng)常使用到“另存為圖片”的功能,本文即介紹如何將WPF控件顯示內(nèi)容轉(zhuǎn)換為圖片。

  

例子

    保存界面顯示內(nèi)容為圖片:

    imageimage

    代碼:

var bitmaPRender = new RenderTargetBitmap((int)MainCanvas.ActualWidth, (int)MainCanvas.ActualHeight, 96, 96, PixelFormats.Pbgra32);bitmapRender.Render(MainCanvas);var bmpEncoder = new BmpBitmapEncoder();bmpEncoder.Frames.Add(BitmapFrame.Create(bitmapRender));using (var file = File.Create("output.bmp"))    bmpEncoder.Save(file);

   


 

轉(zhuǎn)換各種格式的圖片

    封裝出如下函數(shù):

private void GetPicFromControl(FrameworkElement element, String type, String outputPath){    //96為顯示器DPI    var bitmapRender = new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight, 96, 96, PixelFormats.Pbgra32);    //控件內(nèi)容渲染RenderTargetBitmap    bitmapRender.Render(element);    BitmapEncoder encoder = null;    //選取編碼器    switch (type.ToUpper())    {        case "BMP":            encoder = new BmpBitmapEncoder();            break;        case "GIF":            encoder = new GifBitmapEncoder();            break;        case "JPEG":            encoder = new JpegBitmapEncoder();            break;        case "PNG":            encoder = new PngBitmapEncoder();            break;        case "TIFF":            encoder = new TiffBitmapEncoder();            break;        default:            break;    }    //對于一般的圖片,只有一幀,動態(tài)圖片是有多幀的。    encoder.Frames.Add(BitmapFrame.Create(bitmapRender));    if (!Directory.Exists(System.IO.Path.GetDirectoryName(outputPath)))        Directory.CreateDirectory(System.IO.Path.GetDirectoryName(outputPath));    using (var file = File.Create(outputPath))        encoder.Save(file);}
    WPF中,控件基本都繼承于FrameworkElement,所以,所有的控件都可以直接丟進來,并轉(zhuǎn)換其內(nèi)容為特定格式的圖片。

    測試代碼XAML部分:

<Window x:Class="BMPGenerator.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">    <StackPanel>        <Canvas Name="MainCanvas" Background="White" Height="270"/>        <Button Click="Button_Click">PicGenerate</Button>    </StackPanel></Window>

    測試代碼后臺部分:

private void Button_Click(object sender, RoutedEventArgs e){    GetPicFromControl(MainCanvas, "BMP", @"E:/Tmp/output.BMP");    GetPicFromControl(MainCanvas, "GIF", @"E:/Tmp/output.GIF");    GetPicFromControl(MainCanvas, "JPEG", @"E:/Tmp/output.JPEG");    GetPicFromControl(MainCanvas, "PNG", @"E:/Tmp/output.PNG");    GetPicFromControl(MainCanvas, "TIFF", @"E:/Tmp/output.TIFF");}

     結(jié)果:

    image
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 赫章县| 六安市| 文化| 南城县| 泰顺县| 广西| 郑州市| 岱山县| 连平县| 浏阳市| 昌黎县| 沈阳市| 平邑县| 会宁县| 陇西县| 新化县| 徐汇区| 星子县| 汝南县| 信宜市| 桂林市| 新巴尔虎右旗| 衢州市| 恩平市| 外汇| 新巴尔虎左旗| 秦安县| 乌兰浩特市| 凤山县| 田东县| 江川县| 翼城县| 宁国市| 临安市| 手游| 响水县| 绿春县| 阿拉尔市| 确山县| 宽城| 河曲县|