Silverlight: silverlight网页图片浏览工具

 

MainPage.xaml:

ExpandedBlockStart.gif 代码
< UserControl  x:Class ="objectMove.MainPage"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    mc:Ignorable
="d"
    d:DesignHeight
="700"  d:DesignWidth ="1200" >
    
< UserControl.Resources  >
        
< Storyboard  x:Name ="myboard" >
            
< DoubleAnimation  x:Name ="r1Animation"  Storyboard.TargetName ="r1Transform"  Storyboard.TargetProperty ="Angle"  From ="-180"  To ="180"  Duration ="0:0:3"  RepeatBehavior ="Forever" />
   
< DoubleAnimation  x:Name ="r2Animation"  Storyboard.TargetName ="r2Transform"  Storyboard.TargetProperty ="Angle"  From ="-180"  To ="180"  Duration ="0:0:3"  RepeatBehavior ="Forever" />
   
< DoubleAnimation  x:Name ="r3Animation"  Storyboard.TargetName ="r3Transform"  Storyboard.TargetProperty ="Angle"  From ="-180"  To ="180"  Duration ="0:0:3"  RepeatBehavior ="Forever" />
        
</ Storyboard >
    
</ UserControl.Resources >
    
< Grid  x:Name ="LayoutRoot"  Background ="white" >
  
< Grid.RowDefinitions >
   
< RowDefinition  Height ="50" />
   
< RowDefinition  Height ="600" />
   
< RowDefinition  Height ="50" />
  
</ Grid.RowDefinitions >
  
< Grid.ColumnDefinitions  >
   
< ColumnDefinition  Width ="20" />
   
< ColumnDefinition  Width ="800" />
   
< ColumnDefinition  Width ="200" />
  
</ Grid.ColumnDefinitions >
  
< TextBlock  Text ="Silverlight图片浏览工具"  FontFamily ="Comic Sans MS"  FontSize ="34"  Grid.Row ="0"  Grid.Column ="1"  HorizontalAlignment ="Center" />
        
< Canvas  Height ="600"  Width ="800"  x:Name ="Container"  Margin ="0,8,0,-8"  Grid.Row ="1"  Grid.Column ="1" >
            
< Rectangle  x:Name ="r1"  Height ="80"  Width ="80"  Canvas.Left ="479"  Canvas.Top ="189"   MouseLeftButtonDown ="Rectangle_MouseLeftButtonDown"  MouseMove ="Rectangle_MouseMove"  MouseLeftButtonUp ="Rectangle_MouseLeftButtonUp"  MouseEnter ="Rectangle_MouseEnter"  MouseLeave ="Rectangle_MouseLeave"  RenderTransformOrigin ="0.525,1" >
                
< Rectangle.Fill  >
                    
< ImageBrush  x:Name ="ImgBrush"  ImageSource ="Images/bug.png"   />
                
</ Rectangle.Fill >
                
< Rectangle.RenderTransform  >
                    
< RotateTransform  x:Name ="r1Transform" />
                
</ Rectangle.RenderTransform >
            
</ Rectangle >
            
< Rectangle  x:Name ="r2"  Height ="80"  Width ="80"  Canvas.Left ="67"  Canvas.Top ="189"   MouseLeftButtonDown ="Rectangle_MouseLeftButtonDown"  MouseMove ="Rectangle_MouseMove"  MouseLeftButtonUp ="Rectangle_MouseLeftButtonUp"  MouseEnter ="Rectangle_MouseEnter"  MouseLeave ="Rectangle_MouseLeave"  RenderTransformOrigin ="0.525,1.05" >
                
< Rectangle.Fill  >
                    
< ImageBrush  x:Name ="ImgBrush2"  ImageSource ="Images/porit.png"   />
                
</ Rectangle.Fill >
   
< Rectangle.RenderTransform  >
                    
< RotateTransform  x:Name ="r2Transform" />
                
</ Rectangle.RenderTransform >
            
</ Rectangle >
            
< Rectangle  x:Name ="r3"  Height ="80"  Width ="80"  Canvas.Left ="275"  Canvas.Top ="189"   MouseLeftButtonDown ="Rectangle_MouseLeftButtonDown"  MouseMove ="Rectangle_MouseMove"  MouseLeftButtonUp ="Rectangle_MouseLeftButtonUp"  MouseEnter ="Rectangle_MouseEnter"  MouseLeave ="Rectangle_MouseLeave"  RenderTransformOrigin ="0.5,1.063" >
                
< Rectangle.Fill  >
                    
< ImageBrush  x:Name ="ImgBrush3"  ImageSource ="Images/Penguins.jpg"   />
                
</ Rectangle.Fill >
    
< Rectangle.RenderTransform  >
                    
< RotateTransform  x:Name ="r3Transform" />
                
</ Rectangle.RenderTransform >
            
</ Rectangle >
        
</ Canvas >
  
< Canvas  Width ="800"  Height ="50"  Grid.Row ="2"  Grid.Column ="1" >
   
< StackPanel  Orientation ="Horizontal" >
       
< Button  x:Name ="button1"  Height ="23"  HorizontalAlignment ="Left"   Content ="Run"  VerticalAlignment ="Top"  Width ="75"  Click ="button1_Click"  FontSize ="13.333"  FontFamily ="Verdana"  BorderThickness ="3,3,1,1"   >
        
< Button.Effect >
         
< DropShadowEffect />
        
</ Button.Effect >
       
</ Button >
          
< Button  x:Name ="button2"  HorizontalAlignment ="Left"  Height ="23"  VerticalAlignment ="Top"  Content ="Stop"  Width ="75"  Click ="button2_Click"  FontSize ="13.333"  FontFamily ="Verdana"  BorderThickness ="3,3,1,1" >
           
< Button.Effect >
            
< DropShadowEffect />
           
</ Button.Effect >
          
</ Button >
          
< Slider   x:Name ="slider1"  Height ="23"  HorizontalAlignment ="Left"  VerticalAlignment ="Top"  Width ="400"  Minimum ="80"  Maximum ="500"  ValueChanged ="slider1_ValueChanged"  Value ="80"  BorderThickness ="5,15,5,5"  RenderTransformOrigin ="0.5,0.5"   >
           
< Slider.Effect >
            
< DropShadowEffect />
           
</ Slider.Effect >
           
< Slider.Background >
            
< LinearGradientBrush  EndPoint ="0.5,1"  StartPoint ="0.5,0" >
             
< GradientStop  Color ="Black"  Offset ="0.127" />
             
< GradientStop  Color ="#FF85B678"  Offset ="0.92" />
            
</ LinearGradientBrush >
           
</ Slider.Background >
          
</ Slider >
   
</ StackPanel >
  
</ Canvas >
   
< Canvas  Width ="200"  Height ="600"  Grid.Row ="1"  Grid.Column ="2" >
   
< StackPanel  Orientation ="Vertical" >
    
< TextBlock  Text ="替换为自己的照片"  FontSize ="21.333"  HorizontalAlignment ="left"  Cursor ="Hand"  ToolTipService.ToolTip ="首先,选中左边的某张图片, 点击下方选择图片按钮, 在对话框中选择自己想上传的图片"  FontFamily ="Comic Sans MS" />
                
< Image  x:Name ="currImage"  Width ="200"  Height ="200" />
                
< Button  x:Name ="selectbt1"  Content ="选择图片"  Click ="selectbt1_Click"  FontSize ="13.333"  BorderThickness ="3,3,1,1"  Background ="#FF5BABEB" >
                 
< Button.Effect >
                  
< DropShadowEffect />
                 
</ Button.Effect >
                
</ Button >
   
</ StackPanel >
  
</ Canvas >
    
</ Grid >
</ UserControl >

 

 

MainPage.xaml.cs:

 

ExpandedBlockStart.gif 代码
using  System;
using  System.IO;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Imaging;
using  System.Windows.Media.Animation;
using  System.Windows.Shapes;

namespace  objectMove
{
    
public   partial   class  MainPage : UserControl
    {
        
double  beginX  =   0 ;
        
double  beginY  =   0 ;
        
bool  isMouseDown  =   false ;
        
public  MainPage()
        {
            InitializeComponent();
        }

        
private   void  Rectangle_MouseLeftButtonDown( object  sender, MouseButtonEventArgs e)
        {
            Rectangle r 
=  sender  as  Rectangle;
   
            beginX 
=  e.GetPosition( this ).X;
            beginY 
=  e.GetPosition( this ).Y;
   
foreach  ( object   item  in  Container.Children )
            {
                
if  (item  is  Rectangle)
                {
                    Rectangle re 
=  item  as  Rectangle;
                    re.SetValue(Canvas.ZIndexProperty, 
0 );
                }
            }
            r.SetValue(Canvas.ZIndexProperty, 
1 );
   slider1.Value 
= r.Width ;
            isMouseDown 
=   true ;
            r.CaptureMouse();         
        }

        
private   void  Rectangle_MouseMove( object  sender, MouseEventArgs e)
        {
   
            Rectangle r 
= sender  as  Rectangle;   
            
if (isMouseDown)
            {
                r.Opacity 
=   0.2 ;
                
double  currX  =  e.GetPosition( this ).X;
                
double  currY  =  e.GetPosition( this ).Y;
                
if  (currX  >   200   &&  currX  <   800 )
                {
                    r.SetValue(Canvas.LeftProperty, (currX 
-  beginX)  +  Convert.ToDouble(r.GetValue(Canvas.LeftProperty)));
                    beginX 
=  currX;
                }
                
if  (currY  >   200   &&  currY  < 600 )
                {
                    r.SetValue(Canvas.TopProperty, (currY 
-  beginY)  +  Convert.ToDouble(r.GetValue(Canvas.TopProperty)));
                    beginY 
=  currY;
                }
            }
        }

        
private   void  Rectangle_MouseLeftButtonUp( object  sender, MouseButtonEventArgs e)
        {
            Rectangle r 
=  sender  as  Rectangle;
            isMouseDown 
=   false ;
            r.ReleaseMouseCapture();
            r.Opacity 
=   1 ;            
        }

        
///   <summary>
        
///  Rectangle_MouseEnter和Rectangle_MouseLeave这两个方法实现 当鼠标移过未选中的图片是图片要放大1.5倍
        
///   </summary>     
         private   void  Rectangle_MouseEnter( object  sender, MouseEventArgs e)
        {
            Rectangle r 
=  sender  as  Rectangle;
   
if (r.Width == 80 && Convert.ToDouble (r.GetValue (Canvas.ZIndexProperty)) == 0 )
   {
            r.Width 
*=   1.5 ;
            r.Height 
*=   1.5 ;
   }
        }

        
private   void  Rectangle_MouseLeave( object  sender, MouseEventArgs e)
        {
            Rectangle r 
=  sender  as  Rectangle;
   
if (r.Width == 80 * 1.5 && Convert.ToDouble (r.GetValue (Canvas.ZIndexProperty)) == 0 )
   {
            r.Width 
/=   1.5 ;
            r.Height 
/=   1.5 ;
   }
        }
        
private   void  button1_Click( object  sender, RoutedEventArgs e)
        {
            myboard.Begin();
        }
  
private   void  button2_Click( object  sender, RoutedEventArgs e)
        {
            myboard.Stop ();
        }

        
private   void  slider1_ValueChanged( object  sender, RoutedPropertyChangedEventArgs < double >  e)
        {
            
if  (e.OldValue  != 0 // 防止Slider提前初始化时该方法被调用 引发object not set to a instance异常 
            {
                Slider slider1 
=  sender  as  Slider;
                
double  value  =  slider1.Value;
                
foreach  ( object  item  in  Container.Children)
                {
                    
if  (item  is  Rectangle)
                    {
                        Rectangle re 
=  item  as  Rectangle;
                        
if  (Convert.ToDouble(re.GetValue(Canvas.ZIndexProperty))  ==   1 )
                        {
                            re.Width 
=  value;
                            re.Height 
=  value;
                        }
                    }
                }
            }
        }

        
private   void  selectbt1_Click( object  sender, RoutedEventArgs e)
        {
            OpenFileDialog opFileDialog 
=   new  OpenFileDialog();
            opFileDialog.Filter 
=   " Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.* " ;
            
if  (opFileDialog.ShowDialog() == true )
            {
                Stream mystream
= null ;
                
using  (mystream  =  opFileDialog.File.OpenRead())
                {
                    
// BitmapImage继承自ImageSource
                    BitmapImage image  =   new  BitmapImage();
                    image.SetSource(mystream);
                    currImage.Source 
=  image;
                    mystream.Close();
                    
foreach  (var item  in  Container .Children)
                    {
                        
if  (item  is  Rectangle)
                        {
                            Rectangle r 
=  item  as  Rectangle;
                            
double  zindex  =  Convert.ToDouble(r.GetValue(Canvas.ZIndexProperty));
                            
// zindex=1 当前选中的Rectangle 把它的ImageBrush的ImageSource更给为选则的图片
                             if  (zindex  ==   1 )
                            {
                                ImageBrush brush 
=   new  ImageBrush();
                                brush.ImageSource 
=  image;
                                r.Fill 
=  brush;
                            }
                        }
                    }                    
                }
            }
        }
                  
    }
}

 

 

转载于:https://www.cnblogs.com/qixue/archive/2009/11/18/1605600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值