C#全屏随机位置显示图片的小程序

想法:将屏幕截图作为程序背景图,在之上弹出提示窗口,选择确定后进行定时图片随机位置显示。(支持ESC键退出)

  • 需要添加的控件:Timer

 

  • 需要修改的Form1属性为下图红色区域:

 

 

  • 资源文件的添加:添加->新建项->资源文件

  • ESC键退出程序:

在Form1.Designer.cs中增加

this.KeyDown += Form1_KeyDown;

  • 代码如下:
     1         Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty));
     2 
     3         public Form1()
     4         {
     5             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
     6             this.BackgroundImage = GetNoCursor();
     7             InitializeComponent();
     8         }
     9 
    10         private void Form1_Load(object sender, EventArgs e)
    11         {
    12             timer1.Interval = 500;
    13             if (MessageBox.Show("消息", "标题", MessageBoxButtons.YesNo) == DialogResult.Yes)
    14             {
    15                 timer1.Enabled = true;
    16             }
    17             else
    18             {
    19                 this.Close();
    20             }
    21         }
    22 
    23         private void Form1_KeyDown(object sender, KeyEventArgs e)
    24         {
    25             if (e.KeyData == Keys.Escape)
    26             {
    27                 timer1.Enabled = false;
    28                 MessageBox.Show("消息", "标题", MessageBoxButtons.OK);
    29                 this.Close();
    30             }
    31         }
    32 
    33         private Bitmap GetNoCursor()
    34         {
    35             Bitmap Source = new Bitmap(bounds.Width, bounds.Height);    //根据屏幕大小创建Bitmap对象
    36             Graphics g = Graphics.FromImage(Source);
    37             g.CopyFromScreen(0, 0, 0, 0, Source.Size);  //获取没有鼠标的屏幕截图
    38             g.Dispose();    //释放资源
    39             return Source;
    40         }
    41 
    42         private void timer1_Tick(object sender, EventArgs e)
    43         {
    44             Image img = Resource1.Image1;//获取用于显示的资源文件
    45             if (img != null)
    46             {
    47                 Graphics g = this.CreateGraphics();
    48                 Random rd = new Random();
    49                 int picXPoint = rd.Next(0, bounds.Right - img.Width);
    50                 int picYPoint = rd.Next(0, bounds.Height - img.Height);
    51                 Point ulCorner = new Point(picXPoint, picYPoint);
    52                 g.DrawImageUnscaled(img, ulCorner);
    53             }
    54             else
    55             {
    56                 timer1.Enabled = false;
    57                 MessageBox.Show("没有图片,感谢使用");
    58                 this.Close();
    59             }
    60         }

     

posted @ 2016-09-19 21:40  Idus  阅读(1898)  评论(0编辑  收藏  举报