在这里问了好多人怎么截图的方法
走了不少弯路,最后靠自己找到了一个非常简洁的截图方法
下面是我写的拼图 100多行的样子 求改进
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Random r = new Random();//随机种子
Point pi = new Point();//出界返回
Point[] pt = new Point[8];//判断胜负
string[] st = new string[8];//判断胜负
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Left -= 800;
tianjia();
panduan();
}
void tianjia()//添加图片
{
string si;//获取坐标
int i = 7;//图片数量
int n = 0;//变量
string[] s = { "000000", "000100", "000200", "100000", "100100", "100200", "200000", "200100"};
ComboBox cb = new ComboBox();
ComboBox cc = new ComboBox();
cb.Items.AddRange(s);//确定坐标
cc.Items.AddRange(s);//确定图像
for (n = 0; n < 8; n++)
{
PictureBox p = new PictureBox();//创建拼图
p.Name = "i" + i;
p.Size = new Size(100, 100);
p.BackColor = Color.Red; si = cb.Items[r.Next(0,i)].ToString();//打乱拼图坐标
p.Location = new Point(Convert.ToInt32(si) / 1000, Convert.ToInt32(si) % 1000);
cb.Items.Remove(si); Bitmap bit = new Bitmap(99, 99);//给拼图添加背景图片
Graphics g = Graphics.FromImage(bit);
g.DrawImageUnscaled(pictureBox1.Image, -Convert.ToInt32(cc.Items[i]) / 1000, -Convert.ToInt32(cc.Items[i]) % 1000);
p.Image = bit;
Controls.Add(p);//把拼图画到窗体上
pt[n] = new Point(Convert.ToInt32(cc.Items[i]) / 1000, Convert.ToInt32(cc.Items[i]) % 1000);
st[n] = p.Name;
i--;
}
} private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
pi = pictureBox2.Location;
string key = e.KeyChar.ToString();
switch (key)//图片移动
{
case "w": pictureBox2 .Top -= 100; break;
case "s": pictureBox2.Top += 100; break;
case "a": pictureBox2.Left -= 100; break;
case "d": pictureBox2.Left += 100; break;
}
if (pictureBox2.Location.X < 0 || pictureBox2.Location.X > 200 || pictureBox2.Location.Y < 0 || pictureBox2.Location.Y > 200)
pictureBox2.Location = pi;//判断出界
foreach (Control i in Controls)//反向移动
if (i.Location == pictureBox2.Location&&i.Name!="pictureBox2")
{
switch (key)
{
case "w": i.Top += 100; break;
case "s": i.Top -= 100; break;
case "a": i.Left += 100; break;
case "d": i.Left -= 100; break;
}
}
panduan();
}
void panduan()
{
int ai = 0;
for (int n = 0; n < 8; n++)
foreach (Control i in Controls)
if (i.Name == st[n] && i.Location == pt[n])
ai++;
label1.Text = ai.ToString();
if (ai == 8)
{
MessageBox.Show("恭喜你,通关了");
Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (pictureBox1.Location.X == -800)
pictureBox1.Left += 800;
else
pictureBox1.Left -= 800;
} }
}源文件下载http://download.csdn.net/detail/woshileer02/4013541
走了不少弯路,最后靠自己找到了一个非常简洁的截图方法
下面是我写的拼图 100多行的样子 求改进
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Random r = new Random();//随机种子
Point pi = new Point();//出界返回
Point[] pt = new Point[8];//判断胜负
string[] st = new string[8];//判断胜负
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Left -= 800;
tianjia();
panduan();
}
void tianjia()//添加图片
{
string si;//获取坐标
int i = 7;//图片数量
int n = 0;//变量
string[] s = { "000000", "000100", "000200", "100000", "100100", "100200", "200000", "200100"};
ComboBox cb = new ComboBox();
ComboBox cc = new ComboBox();
cb.Items.AddRange(s);//确定坐标
cc.Items.AddRange(s);//确定图像
for (n = 0; n < 8; n++)
{
PictureBox p = new PictureBox();//创建拼图
p.Name = "i" + i;
p.Size = new Size(100, 100);
p.BackColor = Color.Red; si = cb.Items[r.Next(0,i)].ToString();//打乱拼图坐标
p.Location = new Point(Convert.ToInt32(si) / 1000, Convert.ToInt32(si) % 1000);
cb.Items.Remove(si); Bitmap bit = new Bitmap(99, 99);//给拼图添加背景图片
Graphics g = Graphics.FromImage(bit);
g.DrawImageUnscaled(pictureBox1.Image, -Convert.ToInt32(cc.Items[i]) / 1000, -Convert.ToInt32(cc.Items[i]) % 1000);
p.Image = bit;
Controls.Add(p);//把拼图画到窗体上
pt[n] = new Point(Convert.ToInt32(cc.Items[i]) / 1000, Convert.ToInt32(cc.Items[i]) % 1000);
st[n] = p.Name;
i--;
}
} private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
pi = pictureBox2.Location;
string key = e.KeyChar.ToString();
switch (key)//图片移动
{
case "w": pictureBox2 .Top -= 100; break;
case "s": pictureBox2.Top += 100; break;
case "a": pictureBox2.Left -= 100; break;
case "d": pictureBox2.Left += 100; break;
}
if (pictureBox2.Location.X < 0 || pictureBox2.Location.X > 200 || pictureBox2.Location.Y < 0 || pictureBox2.Location.Y > 200)
pictureBox2.Location = pi;//判断出界
foreach (Control i in Controls)//反向移动
if (i.Location == pictureBox2.Location&&i.Name!="pictureBox2")
{
switch (key)
{
case "w": i.Top += 100; break;
case "s": i.Top -= 100; break;
case "a": i.Left += 100; break;
case "d": i.Left -= 100; break;
}
}
panduan();
}
void panduan()
{
int ai = 0;
for (int n = 0; n < 8; n++)
foreach (Control i in Controls)
if (i.Name == st[n] && i.Location == pt[n])
ai++;
label1.Text = ai.ToString();
if (ai == 8)
{
MessageBox.Show("恭喜你,通关了");
Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (pictureBox1.Location.X == -800)
pictureBox1.Left += 800;
else
pictureBox1.Left -= 800;
} }
}源文件下载http://download.csdn.net/detail/woshileer02/4013541
Graphics g = Graphics.FromImage(bit);
g.DrawImageUnscaled(图片, 坐标);