zoukankan      html  css  js  c++  java
  • Silverlight缩略图生成(使用WriteableBitmap类)(转)

    前段時間,一直因為silverlight生成縮略圖而飽受困擾。

    雖然聽說過WriteableBitmap這個類,能生成縮略圖。也曾百度上面粗略看過,一直沒找到合適的生成縮略圖的辦法。

    今天,再次試過,終于成功。下面貼出代碼,實際的向大家說明一下,縮略圖是如何生成的。

    /// 生成縮略圖
    /// </summary>
    /// <param name="bitmap">要轉換的位圖</param>
    /// <returns>返回WriteableBitmap</returns>
    public WriteableBitmap RenderThumbnail(BitmapImage bitmap)
    {
        Image img = new Image();
        img.Width = 150;
        img.Height = 150;
        img.Source = bitmap;
        WriteableBitmap Wimg = new WriteableBitmap(img,null);
        Wimg.Invalidate();
        return Wimg;
    }

    下面展示一個示例:

    复制代码
     1 <UserControl x:Class="SilverlightTest.MainPage"
     2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6     mc:Ignorable="d"
     7     d:DesignHeight="300" d:DesignWidth="400">
     8 
     9 
    10     <Grid x:Name="LayoutRoot" Background="White">
    11         <Grid.RowDefinitions>
    12             <RowDefinition></RowDefinition>
    13             <RowDefinition></RowDefinition>
    14         </Grid.RowDefinitions>
    15         <Image x:Name="TestImg1" Grid.Row="0" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image>
    16         <Image x:Name="TestImg"  Grid.Row="1" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image>
    17         <TextBlock x:Name="txt" Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Center"></TextBlock>
    18     </Grid>
    19 </UserControl>
    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Windows.Media.Imaging;
    
    namespace SilverlightTest
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                BitmapImage bmap = TestImg.Source as BitmapImage;
                WriteableBitmap wimg = this.RenderThumbnail(bmap);
                TestImg.Source = wimg;
                txt.Text ="原圖大小為:" +bmap.PixelWidth + "Px;縮略圖寬度為:" + wimg.PixelWidth+"Px";
    
            }
            /// <summary>
            /// 生成縮略圖
            /// </summary>
            /// <param name="bitmap">要轉換的位圖</param>
            /// <returns>返回WriteableBitmap</returns>
            public WriteableBitmap RenderThumbnail(BitmapImage bitmap)
            {
                Image img = new Image();
                img.Width = 150;
                img.Height = 150;
                img.Source = bitmap;
                WriteableBitmap Wimg = new WriteableBitmap(img,null);
                Wimg.Invalidate();
                return Wimg;
            }
        }
    }
    复制代码

    請看如下效果:

    原文地址:http://www.cnblogs.com/lilin123/archive/2012/10/31/2747589.html

  • 相关阅读:
    音频可视化
    accunulate
    node
    js 中编码(encode)和解码(decode)的三种方法
    ES6高阶 同步和异步 回调地狱 promise async和await
    区间dp
    树形dp1
    背包dp(多重)
    树形dp
    背包dp(完全)
  • 原文地址:https://www.cnblogs.com/akingyao/p/3077292.html
Copyright © 2011-2022 走看看