<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Silverlight中如何得到PNG格式圖片大小

    Posted on 2010-09-06 16:16 TWaver 閱讀(1689) 評論(0)  編輯  收藏

    隨著最近TWaver .NET的正式發布,有不少使用過TWaver的Java,Web或Flex的老客戶也可以嘗試在項目中使用TWaver .NET,雖然TWaver .NET既有TWaver.Wpf.dll又有TWaver.Silverlight.dll兩個開發包,同時支持WPF和Silverlight兩種方式,用戶可以根據自己需要任意挑選,不過根據我們最近走訪全國各地目前使用TWaver .NET的僅二十家客戶統計,采用Silverlight的解決方案比例還是居多,雖然WPF功能更加強大,但畢竟Silverlight通過很輕量的6m多插件就可以跑在windows,mac甚至是 symbianwindows phone 7 的mobile領域,發布如此輕量,更新如此輕松,部署如此廣泛,何樂而不為呢。

    扯遠了,回到今天主題,不少用過TWaver其他版本的老客戶常抱怨,TWaver其他版本總是那么如此讓人省心,讓我們體驗到開發GUI真的也能做到Don’t Repeat Yourself (DRY) ,為什么TWaver .NET上注冊圖片需要我提供width和height信息TWaver.Utils.RegisterImageByImageSource(string name, ImageSource imageSource, double width, double height)呢,這問題要怪應該怪微軟,為什么Silverlight上非得將Image綁定上source并且真是display出來后才能真的得到width和height信息,當組件還沒呈現時你去獲取image的寬高只能得到0。

    在此我替微軟向去年當TWaver .NET還在beta中就已經開始在項目中預言和使用客戶道歉,我們沒有徹底做到DRY,不過始終堅持最大程序減少用戶工作量原則的TWaver開發團隊,在正式TWaver .NET 1.0發布時提供了讓人更舒心的RegisterPNGImage(string name, Uri uri)函數,是的,你不用在告訴TWaver寬高了,TWaver會自動的去獲取,至于如何獲取很多同學很感興趣,以下實現代碼原理很簡單我就不解釋了,總之條條道路通羅馬,Silverlight不提供的我們也能走出自己的路

     1        internal static void RegisterPNGImage(string name, Uri uri)
     2        {
     3            StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);
     4            if (resourceInfo != null && resourceInfo.Stream != null)
     5            {
     6                BitmapImage image = new BitmapImage();
     7#if SILVERLIGHT
     8                image.SetSource(resourceInfo.Stream);
     9#else
    10                image.BeginInit();
    11                image.StreamSource = resourceInfo.Stream;
    12                image.EndInit();
    13#endif
    14                resourceInfo.Stream.Position = 0;
    15                byte[] header = new byte[8];
    16                resourceInfo.Stream.Read(header, 0, header.Length);
    17                if (header[0== 0x89 &&
    18                    header[1== 0x50 && // P
    19                    header[2== 0x4E && // N
    20                    header[3== 0x47 && // G
    21                    header[4== 0x0D && // CR
    22                    header[5== 0x0A && // LF
    23                    header[6== 0x1A && // EOF
    24                    header[7== 0x0A)   // LF
    25                {
    26                    byte[] buffer = new byte[16];
    27                    resourceInfo.Stream.Read(buffer, 0, buffer.Length);
    28                    Array.Reverse(buffer, 84);
    29                    Array.Reverse(buffer, 124);
    30
    31                    double width = BitConverter.ToInt32(buffer, 8);
    32                    double height = BitConverter.ToInt32(buffer, 12);
    33
    34                    resourceInfo.Stream.Close();
    35                    ImageUtils.RegisterImageAsset(name, new ImageAsset(image, width, height));
    36
    37                    return;
    38                }

    39                resourceInfo.Stream.Close();
    40            }

    41            new Exception("Can not load PNG Image '" + name + "' URI: " + uri);
    42        }

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 老子影院午夜伦不卡亚洲| 亚洲最大在线视频| 春意影院午夜爽爽爽免费| 日本xxwwxxww在线视频免费| 亚洲高清一区二区三区| 2020久久精品国产免费| 亚洲av日韩av综合| 午夜dj在线观看免费视频| 亚洲国产高清国产拍精品| 免费在线观看黄网站| 又黄又大的激情视频在线观看免费视频社区在线 | 国产精品亚洲一区二区三区在线观看| 久久经典免费视频| 亚洲午夜无码久久久久软件| 成年性羞羞视频免费观看无限| 亚洲免费网站观看视频| 免费观看的a级毛片的网站| 美女黄色免费网站| 亚洲综合AV在线在线播放| 可以免费观看的国产视频| 亚洲视频欧洲视频| 女人18毛片a级毛片免费视频| 老外毛片免费视频播放| 在线a亚洲v天堂网2019无码| 99久久免费看国产精品| 亚洲性无码AV中文字幕| 免费在线精品视频| 久久免费看少妇高潮V片特黄| 亚洲伊人久久大香线蕉在观| 日本免费人成黄页网观看视频 | 无码av免费毛片一区二区| 亚洲日韩国产欧美一区二区三区 | 亚洲午夜久久久影院| 亚洲黄色免费网站| 久久久亚洲精华液精华液精华液 | 青青青免费国产在线视频小草| 亚洲第一综合天堂另类专| 中文字幕亚洲乱码熟女一区二区 | 人妻无码一区二区三区免费| 激情亚洲一区国产精品| 亚洲精品成人a在线观看|