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

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

C# 倒计时工具_java

Dotnet工控

专注分享DotNET编程经验,挖掘程序员优秀的学习资源。

7篇原创内容

公众号

C# 倒计时工具_保存图片_02


  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秒时就赶快到那要刷新的地点等小头目。总是能抢到小头目

C# 倒计时工具_控件_03

5.事后又找我能否帮他弄个自动打怪抢头目的脚本,我怕了他了

C# 倒计时工具_保存图片_04

,直接跟他说不会。