天天看點

Windows Phone 7 玻璃框消息提示

先來看下運作後的效果:

<a target="_blank" href="http://blog.51cto.com/attachment/201105/214348986.jpg"></a>

其實說穿了無非就是給彈出框加上玻璃樣式。

具體的改法如下:

打開PhoneyTools項目下的FadingMessage.cs檔案,找到其中的StandardMessage方法,添加如下代碼即可

#region 邊框  

        LinearGradientBrush brush = new LinearGradientBrush();  

        brush.EndPoint = new Point(0.5, 1);  

        brush.StartPoint = new Point(0.5, 0);  

        GradientStop gs1 = new GradientStop();  

        gs1.Color = Color.FromArgb(58, 11, 32, 45);  

        gs1.Offset = 0;  

        GradientStop gs2 = new GradientStop();  

        gs2.Color = Color.FromArgb(62, 255, 255, 255);  

        gs2.Offset = 0.25;  

        GradientStop gs3 = new GradientStop();  

        gs3.Color = Color.FromArgb(255, 255, 255, 255);  

        gs3.Offset = 0.5;  

        GradientStop gs4 = new GradientStop();  

        gs4.Color = Color.FromArgb(62, 255, 255, 255);  

        gs4.Offset = 0.75;  

        GradientStop gs5 = new GradientStop();  

        gs5.Color = Color.FromArgb(191, 255, 255, 255);  

        gs5.Offset = 1;  

        GradientStopCollection gsc = new GradientStopCollection();  

        gsc.Add(gs1);  

        gsc.Add(gs2);  

        gsc.Add(gs3);  

        gsc.Add(gs4);  

        gsc.Add(gs5);  

        brush.GradientStops = gsc;  

        #endregion  

        #region 背景  

        LinearGradientBrush brushForbg = new LinearGradientBrush();  

        brushForbg.EndPoint = new Point(0.5, 1);  

        brushForbg.StartPoint = new Point(0.5, 0);  

        GradientStop gsBg1 = new GradientStop();  

        gsBg1.Color = Color.FromArgb(33, 255, 255, 255);  

        gsBg1.Offset = 0;  

        GradientStop gsBg2 = new GradientStop();  

        gsBg2.Color = Color.FromArgb(192, 255, 255, 255);  

        gsBg2.Offset = 0.287;  

        GradientStop gsBg3 = new GradientStop();  

        gsBg3.Color = Color.FromArgb(255, 255, 255, 255);  

        gsBg3.Offset = 0.683;  

        GradientStop gsBg4 = new GradientStop();  

        gsBg4.Color = Color.FromArgb(33, 255, 255, 255);  

        gsBg4.Offset = 1;  

        GradientStopCollection gsc2 = new GradientStopCollection();  

        gsc2.Add(gsBg1);  

        gsc2.Add(gsBg2);  

        gsc2.Add(gsBg3);  

        gsc2.Add(gsBg4);  

        brushForbg.GradientStops = gsc2;  

      var theContainer = new Border()  

      {  

        //Background = PhoneBrushes.PhoneContrastBackgroundBrush,  

        //BorderBrush = PhoneBrushes.PhoneBorderBrush,  

        Background =brushForbg,//修改為透明背景  

        BorderBrush = brush,//修改為玻璃邊框  

        BorderThickness = PhoneThicknesses.PhoneBorderThickness,  

        CornerRadius = new CornerRadius(5)  

      }; 

其中就是把原來的筆刷換成自己用C#代碼寫的筆刷即可。

另共享一個很不錯的Silverlight玻璃效果的按鈕樣式。

<a target="_blank" href="http://blog.51cto.com/attachment/201105/214529648.jpg"></a>

&lt;Style x:Key="GlassBorderStyle" TargetType="Border"&gt; 

            &lt;Setter Property="BorderThickness" Value="2"/&gt; 

            &lt;Setter Property="Padding" Value="5"/&gt; 

            &lt;Setter Property="Background"&gt; 

                &lt;Setter.Value&gt; 

                    &lt;LinearGradientBrush EndPoint="0.75,1" StartPoint="0.25,0"&gt; 

                        &lt;GradientStop Color="#33FFFFFF" Offset="0"/&gt; 

                        &lt;GradientStop Color="#C0FFFFFF" Offset="0.287"/&gt; 

                        &lt;GradientStop Color="#4011322D" Offset="0.683"/&gt; 

                        &lt;GradientStop Color="#33FFFFFF" Offset="1"/&gt; 

                    &lt;/LinearGradientBrush&gt; 

                &lt;/Setter.Value&gt; 

            &lt;/Setter&gt; 

            &lt;Setter Property="BorderBrush"&gt; 

                    &lt;LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"&gt; 

                        &lt;GradientStop Color="#5811322D" Offset="0"/&gt; 

                        &lt;GradientStop Color="#3EFFFFFF" Offset="0.25"/&gt; 

                        &lt;GradientStop Color="#FFFFFFFF" Offset="0.5"/&gt; 

                        &lt;GradientStop Color="#3EFFFFFF" Offset="0.75"/&gt; 

                        &lt;GradientStop Color="#BFFFFFFF" Offset="1"/&gt; 

            &lt;Setter Property="Effect"&gt; 

                    &lt;DropShadowEffect BlurRadius="3" ShadowDepth="3" Opacity="0.5"/&gt; 

        &lt;/Style&gt; 

使用方法:

&lt;Border x:Name="GlassBorder" Height="100" Width="250" CornerRadius="10" Style="{StaticResource GlassBorderStyle}"&gt; 

            &lt;Button Content="Glass Border Style"/&gt; 

        &lt;/Border&gt; 

<a target="_blank" href="http://alexis.blog.51cto.com/attachment/201105/2621421_1306245658.rar"></a>

<a href="http://down.51cto.com/data/2358176" target="_blank">附件:http://down.51cto.com/data/2358176</a>

    本文轉自xshf12345 51CTO部落格,原文連結:http://blog.51cto.com/alexis/572914,如需轉載請自行聯系原作者

繼續閱讀