C# 倒计时工具

最近一个朋友在玩一个网络游戏,游戏里有10多个小头目,小头目死后每10分钟刷新一次。有好多玩家抢着打怪,谁第一次有伤害,boss死后物品归谁,朋友苦于计算不到小头目boss准备刷新的时间。总是抢不赢别人。想由我帮他弄个多点计算倒计的时间软件。我无聊觉可行,说干就干。

软件界面由:2个按钮(添加、删除)、一个listView,一个pictureBox,一个timer时钟组成。

23870f294dd87d680ed36181ae6206c6.png


  1. 启动时需设计listView列: 只能选择整行需设计listView1.FullRowSelect为True,设计timer为计算倒计时,以秒为单位。

private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
            listView1.Columns.Add("倒计时/秒",80,HorizontalAlignment.Left);
            listView1.Columns.Add("定时间");
            listView1.Columns.Add("图片地址", 100, HorizontalAlignment.Left);
            listView1.FullRowSelect = true;//只能选一行
            timer1.Interval = 1000;
            timer1.Start();
        }

2. 添加按钮,载图并且保存图片,方便下次查看。

private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;//图片拉升或缩小,适应picture控件
            string url;保存图片地址
            pictureBox1.Image = GetScreenCapture(out url);  //用方法载图
            ListViewItem listViewItem = new ListViewItem();
            string timeritem = System.Text.RegularExpressions.Regex.Replace(comboBox1.Text, @"[^0-9]+", "");   //求数字
            listViewItem.Text = (int.Parse(timeritem)*60).ToString();
            listViewItem.SubItems.Add($"{comboBox1.Text}");
            listViewItem.SubItems.Add(url);
            listView1.Items.Add(listViewItem);
        }
        private Bitmap GetScreenCapture(out string url)
        {
            Rectangle tScreenRect = new Rectangle(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Bitmap tSrcBmp = new Bitmap(tScreenRect.Width, tScreenRect.Height); // 用于屏幕原始图片保存
            Graphics gp = Graphics.FromImage(tSrcBmp);
            gp.CopyFromScreen(0, 0, 0, 0, tScreenRect.Size);
            gp.DrawImage(tSrcBmp, 0, 0, tScreenRect, GraphicsUnit.Pixel);
            Random ran = new Random();
            url = @$"temp\{ran.Next(1, 999)}.jpg";
            tSrcBmp.Save(url);
            return tSrcBmp;
        }

3.需按秒更新倒计时,在timer时钟里更新全部的倒计时,

private void timer1_Tick(object sender, EventArgs e)
        {
            this.listView1.BeginUpdate();   //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
            foreach (ListViewItem item in listView1.Items)
            {
                item.SubItems[0].Text = (int.Parse(item.SubItems[0].Text) - 1).ToString(); 
            }
            this.listView1.EndUpdate();  //结束数据处理,UI界面一次性绘制。
        }
        /// <summary>
        /// 双击显示图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {       
            pictureBox1.ImageLocation = listView1.SelectedItems[0].SubItems[2].Text; 
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            File.Delete(listView1.SelectedItems[0].SubItems[2].Text);
            listView1.SelectedItems[0].Remove();
        }

4.效果图:朋友很满意,能计算到小头目秒刷新。快到倒计时为10秒时就赶快到那要刷新的地点等小头目。总是能抢到小头目

21f838d55f426ec62245ed5b9eb5db15.png

5.事后又找我能否帮他弄个自动打怪抢头目的脚本,我怕了他了948696b764533a7488f7a5cc9a863196.png,直接跟他说不会。

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值