using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;
using VLK.CommonClass;
using System.Drawing.Drawing2D;
namespace VLK
{
public partial class frmMain : Form
{
int screenhori;
int screenver;
int screentotal;
long picwidthlen;
long picheightlen;
Point startPoint;
Point endPoint;
Point realStart;
Point realEnd;
//private bool mouseStatus = false;//鼠标状态,false为松开
Microsoft.VisualBasic.PowerPacks.ShapeContainer canvas = new ShapeContainer();
Microsoft.VisualBasic.PowerPacks.RectangleShape theShape = new RectangleShape();
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
DataCon dataconnum = new DataCon();
DataOperate dataoperatenum = new DataOperate();
string strSqlscreennum = "select screenhorinum,screenvernum from tb_screenset where ID=1";
DataSet dsscreennum = dataoperatenum.getDs(strSqlscreennum, "tb_screenset");
screenhori = (int)dsscreennum.Tables[0].Rows[0]["screenhorinum"];
screenver = (int)dsscreennum.Tables[0].Rows[0]["screenvernum"];
screentotal = screenver * screenhori;
picwidthlen = Panl_Screen.Width / screenhori;
picheightlen = Panl_Screen.Width / screenver;
//if (screentotal > 1)
//{
PictureBox[] PictureBoxArray = new PictureBox[screentotal];
//PictureBoxArray[0] = new PictureBox();
//PictureBoxArray[0] = Pic_Screen;
for (int i = 0; i < screentotal-1; i++)
{
PictureBoxArray[i] = new PictureBox();
PictureBoxArray[i].Name = "Pic_Screen" + i;
//PictureBoxArray[i].Parent = Panl_Screen;
Panl_Screen.Controls.Add(PictureBoxArray[i]);
}
Panl_Screen.Controls.Add(canvas);
canvas.Parent = Panl_Screen;
theShape.Parent = canvas;
canvas.Visible = false;
theShape.Visible = false;
theShape.BorderColor = Color.Red;
theShape.BorderStyle = System.Drawing.Drawing2D.DashStyle.Dot;
canvas.SendToBack();
Panl_Screen.Controls.Add(shapewinsy1);
shapewinsy1.Parent = Panl_Screen;
shapewinsy1.BackColor = Color.Transparent;
for (int i = 0; i < screentotal-1; i++)
{
PictureBoxArray[i].MouseDown += new System.Windows.Forms.MouseEventHandler(this.PictureBoxArray_MouseDown);
PictureBoxArray[i].MouseMove += new System.Windows.Forms.MouseEventHandler(this.PictureBoxArray_MouseMove);
PictureBoxArray[i].MouseUp += new System.Windows.Forms.MouseEventHandler(this.PictureBoxArray_MouseUp);
PictureBoxArray[i].Location = new System.Drawing.Point((i % screenhori) * (int)picwidthlen, (i / screenhori) * (int)picheightlen);//图像的位置,以左上角定位
PictureBoxArray[i].Size = new System.Drawing.Size((int)picwidthlen, (int)picheightlen);//图像的大小
PictureBoxArray[i].Image = imageListScreen.Images[1];
PictureBoxArray[i].SizeMode = PictureBoxSizeMode.StretchImage;
PictureBoxArray[i].Tag = i;
PictureBoxArray[i].SendToBack();
}
}
public void PictureBoxArray_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
//mouseStatus = true;
int n;
PictureBox gtnum = (PictureBox)sender;
n = (int)gtnum.Tag;
startPoint.X = e.X + (n % screenhori) * (int)picwidthlen;
startPoint.Y = e.Y + (n / screenhori) * (int)picheightlen;
}
}
public void PictureBoxArray_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//程序逻辑
//提示 ((PictureBox)sender) 可以操作触发此事件的控件对象
if (e.Button == MouseButtons.Left)
{
//if (mouseStatus)
//{
canvas.Visible = false;
theShape.Visible = false;
canvas.SendToBack();
int n;
PictureBox gtnu = (PictureBox)sender;
n = (int)gtnu.Tag;
endPoint.X = e.X + (n % screenhori) * (int)picwidthlen;
endPoint.Y = e.Y + (n / screenhori) * (int)picheightlen;
realStart.X = Math.Min(startPoint.X, endPoint.X);
realStart.Y = Math.Min(startPoint.Y, endPoint.Y);
realEnd.X = Math.Max(startPoint.X, endPoint.X);
realEnd.Y = Math.Max(startPoint.Y, endPoint.Y);
canvas.Location = realStart;
canvas.Width = realEnd.X - realStart.X;
canvas.Height = realEnd.Y - realStart.Y;
theShape.Location = realStart;
theShape.Width = realEnd.X - realStart.X;
theShape.Height = realEnd.Y - realStart.Y;
canvas.Visible = true;
theShape.Visible = true;
canvas.BringToFront();
this.UpdateZOrder();
//}
}
}
public void PictureBoxArray_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
//程序逻辑
//提示 ((PictureBox)sender) 可以操作触发此事件的控件对象
//mouseStatus = false;
//theShape.Visible = false;
//canvas.SendToBack();
}
}
}
不好意思,分不多了,谁能帮俺解决,俺把全部的分都给他
我看你的代码意思是不是在mousemove中记录矩形的点,再在mouseup的时候再画图啊!你这个不是GDI+吗?