Silverlight4.0教程之使用CompositeTransform復合變形特效實現倒影

微軟于PDC2009上發布Silverlight 4 Beta版,微軟在Silverlight 4版本中處理了約8000個的Silverlight終端用戶的請求,加入了一系列另開發人員興奮的新特性,最突出的主要體現在幾個方面:

開發工具增強:Visual Studio 2010具有可視化的設計工具,創建項目時可以選擇運行時版本是3.0還是4.0,BLEND4加入XAML和C#代碼全方位智能感知功能、XAML的樣式應用更為易用等。

攝像頭與MIC硬件支持:可以用極少量的代碼實現啟用用戶本機的WebCam和Mic,并可進行本地錄制。

報表打印支持:報表打印問題在Silverlight4中得到的較好的解決。

更強大的基礎類控件(RichTextBox、DataGrid增強版):富文本控件RichTextBox和具有可粘貼、排序功能的DataGrid被加入。

WCF增強:終于支持TCP通訊,比較HTTP提升3-5倍,限于4502-4534端口。

兼容性增強:對Google的Chrome瀏覽器的支持。

MEF支持:MEF全稱為Managed Extensibility Framework,譯為“托管擴展框架”,支持創建大型復雜的應用程序。

運行速度提升:啟動速度和渲染速度較前個版本提升約2倍左右。

DRM增強:支持PlayReady,可以對視頻和音頻的播放進行的保護,補充了對H.264的DRM保護。

其它增強:本地文件讀寫、鼠標右鍵事件支持、剪粘板支持。

以前當我們需要將多種變形效果(ScaleTransform、TranslateTransform、SkewTransform、RotationTransform)的疊加應用到一個Silverlight對象時一般是使用TransformGroup來組合變形對象,例如下面的代碼我們要實現對一個矩形的變形

XAML:

1?<Rectangle?Width="100"?Height="80"?Fill="Red">?
2?????<Rectangle.RenderTransform>?
3?????????<RotateTransform?Angle="45"/>?
4?????</Rectangle.RenderTransform>?
5?</Rectangle>?

如果要為這樣寫好的XAML代碼添加疊加變形時,我們不得不寫更多的變形對象和添加一個TransformGroup把這些變形對象“包”起來,變為以下的樣子。

XAML:

1?<Rectangle?Height="100"?Width="80"?Fill="Red">?
2?????<Rectangle.RenderTransform>?
3?????????<TransformGroup>?
4?????????????<ScaleTransform?ScaleX="0.8"?ScaleY="0.8"?/>?
5?????????????<SkewTransform?AngleX="30"?/>?
6?????????????<RotateTransform?Angle="45"?/>?
7?????????</TransformGroup>?
8?????</Rectangle.RenderTransform>?
9?</Rectangle>?

?

?

從上面的XAML代碼看來,在我們使用這種方式手寫編碼來疊加變形效果在代碼上面稍顯“羅嗦”,在Silverlight4.0中加入了新的變形對象CompositeTransform,我們可以稱為“復合變形對象”,通過CompositeTransform我們可以簡以上的XAML代碼大大簡化,等效XAML如下。

XAML:

1?<Rectangle?Height="100"?Width="80"?Fill="Red">?
2?????<Rectangle.RenderTransform>?
3?????????<CompositeTransform?SkewX="30"?Rotation="45"?ScaleX="0.8"?ScaleY="0.8"?/>?
4?????</Rectangle.RenderTransform>?
5?</Rectangle>?

上面使用復合變形實現的效果與TransformGroup是完全一致的,但代碼上簡潔了許多,接下來我們使用復合變形對象實現一個“簡潔版”的倒影效果。

XAML:

1??????<Grid?Background="Black">?
2??????????<StackPanel?Width="500"?Height="460"?Margin="5"?
3??????????????????????Orientation="Vertical">?
4??????????????<TextBlock?FontSize="16"?Width="430"?Height="20"?Foreground="White">?
5??????????????????CompositeTransform(組合變形對象)簡化實現倒影效果?
6??????????????</TextBlock>?
7??????????????<Image?Width="400"?Height="240"?Stretch="Fill"??
8?????????????????????Source="Images/avatar_8.jpg"/>?
9??????????????<Image?x:Name="imgShadow"?Width="400"?Height="200"?Stretch="Fill"?
10????????????????????Source="Images/avatar_8.jpg">?
11?????????????????<Image.OpacityMask>?
12?????????????????????<LinearGradientBrush?EndPoint="0.5,1"??
13??????????????????????????????????????????StartPoint="0.5,0">?
14?????????????????????????<GradientStop?Offset="0"/>?
15?????????????????????????<GradientStop?Color="White"?Offset="1"/>?
16?????????????????????</LinearGradientBrush>?
17?????????????????</Image.OpacityMask>?
18?????????????????<Image.RenderTransform>?
19?????????????????<!--使用CompositeTransform(組合變形對象)實現倒影-->?
20?????????????????????<CompositeTransform?TranslateX="35"?TranslateY="200"?
21?????????????????????????????????????????SkewX="10"??
22?????????????????????????????????????????ScaleY="-1"?/>?
23?????????????????</Image.RenderTransform>?
24?????????????</Image>?
25?????????</StackPanel>?
26?????</Grid>?

運行結果如圖所示。

image

等效的C#代碼如下:

1??????????//等效C#后臺代碼實現?
2??????????void?CompositeTransformSample_Loaded(object?sender,?RoutedEventArgs?e)?
3??????????{?
4??????????????//創建組合變形對象?
5??????????????CompositeTransform?ct?=?new?CompositeTransform()?
6??????????????{?
7??????????????????TranslateX?=?35,?
8??????????????????TranslateY?=?200,?
9??????????????????SkewX?=?10,?
10?????????????????ScaleY?=?-1?
11?????????????};?
12?????????????//應用組合變形?
13?????????????imgShadow.RenderTransform?=?ct;?
14?????????}?

使用復合變形代碼雖然簡潔,但它的CenterX和CenterY是相對固定的,你不能夠根據不同的變形屬性改變它的變形中心點,尤其是在動畫過程時,否則你可能還需要通過TransformGroup來實現變形疊加效果或動畫,不過CompositeTransform還是適用于大多數場合的變形。

轉載于:https://www.cnblogs.com/Areas/archive/2011/09/29/2195066.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378145.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

julia矩陣運算_Julia中的復數及其運算

julia矩陣運算Julia| 復數 (Julia | Complex Numbers) The syntax to represent the complex number in Julia is: 在Julia中表示復數的語法為&#xff1a; Syntax: 句法&#xff1a; ABimHere, A and B are the values, and im is the global constant which is bound to th…

2019年的wps計算機考試題,2019年3月計算機一級WPS模擬題及答案(2.21)

【導語】2019年3月計算機一級考試備考正在進行中&#xff0c;為了方便考生及時有效的備考&#xff0c;那么&#xff0c;無憂考網為您精心整理了2019年3月計算機一級WPS模擬題及答案(2.21)&#xff0c;把握機會抓緊練習吧。如想獲取更多計算機一級考試模擬題及備考資料&#xff…

Python求解多項式方程

例如&#xff1a;二次函數&#xff1a;f(x) 10x^2 - 14x 22&#xff0c;依次求解x1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6時函數表達式所對應的函數值。 import numpy as np #f(x) 10*x^2 - 14x 22 p np.array([10,-14,22])#這里存放的是系…

CSS中的border-radius屬性

CSS | 邊界半徑屬性 (CSS | border-radius Property) The border-radius property is commonly used to convert box elements into circles. We can convert box elements into the circle element by setting the border-radius to half of the length of a square element. …

【C++ grammar】Enhancement for Type System (C++11 對類型系統的增強)

數據類型 (Data type) int, long int, double, struct, char *, float [], int (*f)()… 計算機程序構造塊 計算機程序構造塊是不同大小粒度的計算機程序組成部分&#xff0c;它包括變量、表達式、函數或者模塊等。 類型系統 (Type System) 類型系統&#xff1a;在編程語言中…

.net romoting 的EventWrapper類

.net romoting 的EventWrapper類 注意&#xff1a;防火墻的問題 --------------------------------------------------- //定義廣播服務接口 [Serializable] public delegate void BroadCastEventHandler(string info); public interface IBroadCastService {…

一、織物組織相關基本概念

一、織物形成的五大運動&#xff1a;開口、引緯、打緯、送經、卷取 開口運動&#xff08;先開口讓織物形成上下兩層&#xff09; 引緯運動&#xff08;在上下兩層經紗之間進行引緯&#xff0c;把緯紗穿入上下兩層經紗之間&#xff0c;從而實現經紗緯紗之間的交織&#xff09; …

達爾豪斯大學計算機科學世界排名,達爾豪斯大學成了全加最好,這又是個什么排名?...

原標題&#xff1a;達爾豪斯大學成了全加最好&#xff0c;這又是個什么排名&#xff1f;沒有“八大”的知名&#xff0c;沒有“常春藤”的受寵&#xff0c;雖然它只是眾多名校中的普通一個&#xff0c;但只要你對它有個稍微的了解&#xff0c;你一定會愛上它的&#xff01;它雖…

tag標簽記錄

看到項目代碼中有一個自定義的tag標簽&#xff0c;想起以前自己寫過的標簽&#xff0c;竟然忘記的差不多了&#xff0c;手一癢&#xff0c;自己寫個簡單的tag標簽&#xff0c;回顧一下歷史知識 首先建一個servlet工程&#xff0c;然后寫個index.jsp&#xff0c;項目跑起來&…

java類只讀怎么辦_如何在Java中制作一個只讀類?

java類只讀怎么辦The question is that "can we make a read-only class in Java?" 問題是“我們可以用Java制作一個只讀類嗎&#xff1f;” The answer is: "Yes, we can make a read-only in java." 答案是&#xff1a; “是的&#xff0c;我們可以在J…

LeetCode 53:最大子序和解題以及優化思路(第一次獨立刷題記錄)

給定一個整數數組 nums &#xff0c;找到一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&#xff0c;返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大&#xff0c;為 6。 進階: 如果你已經實現…

NHibernate 的 ID 標識選擇器

在 Hibernate 中&#xff0c;每個對象需要一個標識 ID&#xff0c;通過這個標識 ID 建立對象與數據庫中記錄的對應關系。 Nhibernate 提供了多種方式來建立這個 POID。基于不同的生成策略&#xff0c;可以選擇更佳的方式。 首先是賦值方式&#xff1a;assigned&#xff0c;這種…

三、規則組織的衍生組織——經山形組織數學模型的建立

基礎概念公式推到可參考該專欄下的前幾篇博文。 經山形組織圖&#xff1a; 左半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;右斜&#xff0c;飛數為1 右半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;左斜&#xff0c;飛數為-1 左右兩部分只有飛數是相…

c語言 函數的參數傳遞示例_scalbln()函數以及C ++中的示例

c語言 函數的參數傳遞示例C scalbln()函數 (C scalbln() function) scalbln() function is a library function of cmath header. It scales the significand using floating-point base exponent (long int) i.e. it is used to calculate the product of the given signific…

上周熱點回顧(7.8-7.14)

熱點隨筆&#xff1a; MingQQ v1.0高仿版開源了&#xff0c;使用WebQQ協議實現了QQ客戶端基本的聊天功能...&#xff08;ZYM&#xff09; 我的新書&#xff0d;&#xff0d;《從員工到經理人》&#xff08;Jimmy Zhang&#xff09; MVC實用架構設計&#xff08;三&#xff0…

儲存過程生成器

/Files/qanholas/SPGen_ReleaseCandidate1_Binaries.zip ---- Dropping stored procedure sp_費用表_SelectAll : --IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id OBJECT_ID(N[sp_費用表_SelectAll]) AND OBJECTPROPERTY(id, NIsProcedure) 1)DROP PROCEDURE [dbo].[sp…

基于計算機控制的溫度檢測系統,基于專用溫度傳感的溫度檢測系統.doc

基于專用溫度傳感的溫度檢測系統摘 要 在現代工業領域溫度檢測系統是指用某種方式顯示出當前的環境溫度。傳統使用PTC或NTC電阻作為溫度傳感器的方式在使用過程中存在著很多不足之處比如所采集溫度的精度比較低、系統的可靠性差、設計難度較大、整體設計成本較高等缺點已…

LeetCode 121:買賣股票的最佳時機 思考分析

題目描述&#xff1a; 給定一個數組&#xff0c;它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易&#xff08;即買入和賣出一支股票一次&#xff09;&#xff0c;設計一個算法來計算你所能獲取的最大利潤。 注意&#xff1a;你不能在買入股票前賣出…

四、規則組織的衍生組織——經向破斜組織數學模型的建立

基礎概念公式推到可參考該專欄下的前幾篇博文。 經向破斜組織圖&#xff1a; 左半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;右斜&#xff0c;飛數為1 右半部分&#xff1a;&#xff0c;2上1下2上3下。左斜&#xff0c;飛數為-1 左右兩部分&#xff0c;經緯紗組織…

EASYUI+MVC4通用權限管理平臺

通用權限案例平臺在經過幾年的實際項目使用&#xff0c;并取得了不錯的用戶好評。在平臺開發完成后&#xff0c;特抽空總結一下平臺知識&#xff0c;請各位在以后的時間里&#xff0c;關注博客的更新。 1.EASYUIMVC4通用權限管理平臺--前言 2.通用權限管理平臺--架構選型 3.通用…