zoukankan      html  css  js  c++  java
  • silverlight3把page中的控件的内容转为位图另存到本地

    因为项目需要这个功能

     private void btnChartPrint_Click(object sender, RoutedEventArgs e)
             {
                 UIElement cnvSource 
    = this.gridChartPrint as UIElement;
                 WriteableBitmap bitmap 
    = new WriteableBitmap(cnvSource, new TranslateTransform());
                 
    if (bitmap != null)
                 {
                     SaveFileDialog saveDlg 
    = new SaveFileDialog();
                     saveDlg.Filter 
    = "JPEG Files (*.jpeg)|*.jpeg";
                     saveDlg.DefaultExt 
    = ".jpeg";

                     
    if ((bool)saveDlg.ShowDialog())
                     {
                         
    using (Stream fs = saveDlg.OpenFile())
                         {

                             SaveToFile(bitmap, fs);
                             MessageBox.Show(
    "Complete","提示",MessageBoxButton.OK);

                         }
                     }
                 }
              
    使用silverlight中的保存对话框

    using FluxJpeg.Core;这是个开源组件 可以在google的开源网站找到

      private static void SaveToFile(WriteableBitmap bitmap, Stream fs)
             {
                 
    int width = bitmap.PixelWidth;
                 
    int height = bitmap.PixelHeight;
                 
    int bands = 3;
                 
    byte[][,] raster = new byte[bands][,];

                 
    //Convert the Image to pass into FJCore
                 
    //Code From http://stackoverflow.com/questions/1139200/using-fjcore-to-encode-silverlight-writeablebitmap
                 for (int i = 0; i < bands; i++)
                 {
                     raster[i] 
    = new byte[width, height];
                 }

                 
    for (int row = 0; row < height; row++)
                 {
                     
    for (int column = 0; column < width; column++)
                     {
                         
    int pixel = bitmap.Pixels[width * row + column];
                         raster[
    0][column, row] = (byte)(pixel >> 16);
                         raster[
    1][column, row] = (byte)(pixel >> 8);
                         raster[
    2][column, row] = (byte)pixel;
                     }
                 }
    //如果不用强命名 则发布到网站后 不能下载图片 ColorModel  改为 FluxJpeg.Core.ColorMode
                  FluxJpeg.Core.ColorModel model = new FluxJpeg.Core.ColorModel { colorspace = ColorSpace.RGB };
                 FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster);

                 
    //Encode the Image as a JPEG
                 MemoryStream stream = new MemoryStream();
                 FluxJpeg.Core.Encoder.JpegEncoder encoder 
    = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream);
                 encoder.Encode();

                 
    //Back to the start
                 stream.Seek(0, SeekOrigin.Begin);

                 
    //Get teh Bytes and write them to the stream
                 byte[] binaryData = new Byte[stream.Length];
                 
    long bytesRead = stream.Read(binaryData, 0, (int)stream.Length);
                 fs.Write(binaryData, 
    0, binaryData.Length);
  • 相关阅读:
    问题2 机器学习篇 正则化L1和L2有什么区别?
    numpy 数组拼接方法
    问题1 机器学习篇 如何解决过拟合(overfiting)?
    低阶 TensorFlow 基础知识
    k-Nearest Neighbors 实战2 使用kNN算法改进约会网站的配对结果
    k-Nearest Neighbors 实战1 简单的电影分类实例
    VirtualBox使用
    知乎登录设计思考
    微信返回上一页停留在上次点击的位置
    好的网站-一直在收集
  • 原文地址:https://www.cnblogs.com/z_lb/p/1562330.html
Copyright © 2011-2022 走看看