这个程序用到了WPF里  “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点;

  在屏保状态下播放指定文件夹下的视频,而且能分屏显示;

  把编译好的屏保程序(原本是.exe)改名为.SCR 放到C:\Windos\System32下

   现在就可以设置为屏保了:譬如win7系统的 在桌面属性→→个性化设置里→→ 选择屏保程序→→ 这时候就能看到你写的屏保程序的名字了(切记改名.scr);

MainWindow.xaml:

  

<Window x:Class="visual_Brush.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:s="http://schemas.microsoft.com/surface/2008"
        Title="MainWindow" Height="1080" Width="3840"  WindowStyle="None" ResizeMode="NoResize"
        xmlns:local="clr-namespace:visual_Brush" WindowStartupLocation="Manual" Background="Black" Left="0" Top="0"
        MouseDown="Window_MouseDown" TouchDown="Window_TouchDown" Topmost="True">
    <Grid Height="1080" Width="3840" Name="grid">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <local:UserControl_Video x:Name="Video" Height="1080" Width="1920" Grid.Column="0"></local:UserControl_Video>
        <Grid x:Name="ExtendedScreenGrid" Height="1080" Width="1920" Grid.Column="1" Background="Black" VerticalAlignment="Top" HorizontalAlignment="Right" >
            <Rectangle  StrokeThickness="0">
                <Rectangle.Fill>
                    <VisualBrush Visual="{Binding ElementName=Video}">
                    </VisualBrush>
                </Rectangle.Fill>
            </Rectangle>
        </Grid>
    </Grid>

</Window>

MainWindow.cs(后台代码)→)→)→)→)→)→)→)→)→)→)→)→

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            this.Close();
        }
    }

UserControl_Video.xaml

<UserControl x:Class="visual_Brush.UserControl_Video"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" Loaded="UserControl_Loaded_1">
    <Grid x:Name="grid">
        <MediaElement Name="myMedia" LoadedBehavior="Play" MediaOpened="myMedia_MediaOpened">
        </MediaElement>
    </Grid>
</UserControl>

UserControl_Video.cs(后台代码)

public partial class UserControl_Video : UserControl
    {
        int i = 0;
        string[] carImageUris = Directory.GetFiles(@"D:\video");//指定文件夹目录

private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
        {
            myMedia.MediaEnded+=new RoutedEventHandler(myMedia_MediaEnded);
            myMedia.Source = new Uri(carImageUris[0], UriKind.Absolute);
        }

void myMedia_MediaOpened(object sender, RoutedEventArgs e)
        {
            myMedia.LoadedBehavior = MediaState.Manual;
            myMedia.Play();
        }

/// <summary>
        /// 当媒体结束时发生
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
         void myMedia_MediaEnded(object sender, RoutedEventArgs e)
         {
             if (i!= carImageUris.Length-1)
             {
                 i++;
                myMedia.Source = new Uri(carImageUris[i], UriKind.Absolute);
             }
           else
            {
                myMedia.Source = new Uri(carImageUris[0], UriKind.Absolute);
                i = 0;
            }
        }
        public UserControl_Video()
        {
            InitializeComponent();
            myMedia.Volume = 100;
            //myMedia.Play();
        }
       void mediaPlay(Object sender, EventArgs e)
       {
            myMedia.Play();
       }

}

  

wpf 制作播放视频的屏保程序、而且能分屏显示的更多相关文章

  1. 用Qt写的简单屏保程序

    近日老大提别人家产品都有屏保程序,貌似我们也该有,简单在qtcn.org请教了一下,写了个小程序! 晕倒,半天没找到上传功能!我已经上传到qtcn上了,地址如下: http://www.qtcn.or ...

  2. WinForm 屏保程序

    this.ShowInTaskbar = false; this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWind ...

  3. 3D屏保程序:汉诺塔

    学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行 ...

  4. python写的屏保程序

    __author__ = 'ChenYan' from random import randint from tkinter import * class Randball(): def __init ...

  5. [archlinux][plasma][screensaver] plasma5配置屏保程序,没成功(-_-#)

    plamsa用了好久,一直没有屏保.我想要玄酷的屏保! 用xscreensaver, 之前用FVWM2的时候,就用过了,很玄酷. 一,安装 pacman -S xscreensaver 二,配置 xs ...

  6. 用processing生成屏保程序

    想法 利用随机数控制圆圈的大小.位置以及颜色,可以产生随机的美感. 让小球动起来,并且在屏幕边界处产生反弹效果. 代码 1: float circle_x = (float) 0.0; 2: floa ...

  7. WPF 制作 Windows 屏保

    分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...

  8. 一个仿windows泡泡屏保的实现

    一个仿windows泡泡屏保的实现 有天看到有人在百度知道上问windows 泡泡屏保该怎么用C#做,一时有趣,就做了一个出来,对于其中几个要点总结如下: 一,屏保程序的制作要求 屏保程序的扩展名是. ...

  9. 3D屏保: 线圈

    LineFlower3DSP 一个3D屏保程序,算法的原理类似于圆内轮旋线的生成. 下载地址: http://files.cnblogs.com/WhyEngine/LineFlower3D_sp.z ...

随机推荐

  1. Football

    Football Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2882   Accepted: 1466 Descript ...

  2. block的简单使用:点击按钮在另一个控制器内调用block内的代码

    1.自定义一个继承于UIButton的按钮 2.声明block: 返回值类型   函数名  参数列表 typedef void (^ButtonBlock)(UIButton *); @interfa ...

  3. javaweb学习总结一(eclipse常用快捷键、debug调试以及junit测试框架)

    一:web的发展趋势1:C/S(客户端/服务器)结构向B/S(浏览器/服务器)结构发展,以后的电脑只需操作系统和浏览器即可.所有的服务都存储在服务器端,只需用户登录后从服务端同步数据,例如:看电影不需 ...

  4. CF Spreadsheets (数学)

    Spreadsheets time limit per test 10 seconds memory limit per test 64 megabytes input standard input ...

  5. namenode无法启动(namenode格式化失败)

    格式化namenode root@node04 bin]# sudo -u hdfs hdfs namenode –format 16/11/14 10:56:51 INFO namenode.Nam ...

  6. python遍历目录文件脚本的示例

    例子 自己写的一个Python遍历文件脚本,对查到的文件进行特定的处理.没啥技术含量,但是也记录一下吧. 代码如下 复制代码 #!/usr/bin/python# -*- coding: utf-8 ...

  7. 第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件

    iOS打开本地和网络上的word.ppt.excel.text等文件 iOS开发过程中可能需要预览一些文件,这些文件的格式可能有word.ppt.excel等文件格式.那么系统提供两个类去预览这些文件 ...

  8. 记redis的一个测试

    现有020的系统架构走库存,取券通过Fetch前n条来实现买n张优惠券,但此做法在高并发时有严重的性能问题,性能问题主要体现在数据库. 为了优化此性能,系统改为redis,走队列模式,即生产者消费者. ...

  9. hibernate的运行流程

    首先了解什么是对象关系映射,ORM(Object/Relationship Mapping):对象关系映射.对象关系映射是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.是通过使用描述对象 ...

  10. Spring事务配置的五种方式(转发)

    Spring事务配置的五种方式(原博客地址是http://www.blogjava.net/robbie/archive/2009/04/05/264003.html)挺好的,收藏转发 前段时间对Sp ...