在去年年底,为了学习Silverlight4.0的新特性,我萌生了开发一个基于其新特性的项目。当然在这个项目中使用了包括鼠标右键菜单(Popup),打印功能(PrintDocument),导航功能摄像头,图片上传等。当然目前这个产品已在我们的官方产品Discuz!NT3.1中使用,今天开源的仅是本应用的源码。

      下面链接中是产品的运行截图:

      http://www.cnblogs.com/daizhj/archive/2010/02/26/1674389.html

 

      好了,接下来介绍一下产品的源码分布:

      发布基于silverlight4的HaoRna.WebCam摄像头应用源码

      其中:

      ChildWindows\
            CWMessageBox.xaml:显示窗口信息控件,用于显示系统提示的各种消息
            CWViewUploadedImage.xaml:显示用于上传头像或文件之后的显示结果(包括大中小三种尺寸)

      Controls\
            FocusRectangle.xaml: 焦点选择区域控件及相应用户拖动效果
            ImageButton.xaml:图片控件
            InkMenu.xaml:ink涂鸦工具栏控件

      Cursors\
            CustomCursors.xaml: 定制鼠标图标控件, 用于当鼠标进入FocusRectangle区域后显示定制的十字箭头

      Shader\三个silverlight滤镜

      Images\ 项目中使用的图标

      Utils\相关工具类
            Constants.cs,Converter.cs,UserFile.cs,FileCollection.cs, FileUploader.cs 图片上传代码
            Utils.cs 常用函数封装工具类

 

       AdvanceMode.xaml:高级模式的编辑窗口
       ImageBrowser.xaml:图片浏览和编辑上传窗口
       NavPage.xaml:导航窗口
       WebCam.xaml:摄像头功能和上传窗口

       

       好的,产品布局就介绍到这里了,下面是对于之前朋友感兴趣的一些功能的代码介绍。
       首先就是焦点选择框(矩形)的实现原理和相应代码,位于FocusRectangle.xaml和FocusRectangle.xaml.cs 原理就是首先绘制8个小矩形,作为用户进行鼠标操作的入口(均定制了鼠标点击操作代码),然后将这8个小矩形分布在一个大矩形的四角和两两节点间的中心位置,当然也加入鼠标的拖动和“上下左右扩展”代码,明确了实现方式之后,就看一下源码来加深一下理解了: 

      发布基于silverlight4的HaoRna.WebCam摄像头应用源码

      XAML:

<Canvas x:Name="LayoutRoot">       
   
<Canvas Name="ViewportHost" Height="270" Width="270" Background="Gray">
       
<ScrollViewer Canvas.ZIndex="0" Name="imageScroll" BorderThickness="0"  Background="Transparent" Width="270"  Height="270" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden">
           
<Rectangle Name="Viewport" Width="270" Height="270" Canvas.ZIndex="100">
               
<Rectangle.Fill>
                   
<ImageBrush>
                       
<ImageBrush.ImageSource>
                           
<BitmapImage x:Name="selectedImage" UriSource ="../Images/main.jpg"/>
                       
</ImageBrush.ImageSource>
                   
</ImageBrush>
               
</Rectangle.Fill>
           
</Rectangle>
       
</ScrollViewer>
       
<!--<TextBlock x:Name="msgBox" Width="269" Text="000" Foreground="Red" Height="100" Canvas.ZIndex="10000" />-->
       
<local:CustomCursors x:Name="customCursors" Visibility="Collapsed"></local:CustomCursors>
       
<Rectangle Name="FocusRect" Canvas.Left="5" Canvas.Top="5" Fill="Transparent"  Opacity="1" Stroke="White" StrokeThickness="1"  />
   
</Canvas>
</Canvas>

相关文章:

  • 2021-08-12
  • 2022-12-23
  • 2021-04-11
  • 2021-08-27
  • 2022-12-23
  • 2022-01-01
  • 2022-02-07
  • 2021-12-02
猜你喜欢
  • 2022-01-18
  • 2021-08-01
  • 2021-12-14
  • 2021-11-07
相关资源
相似解决方案