Bsbosa.com
07-13-2010, 04:07 AM
drawn an rectangle on the image using picture box.
quires
1. when tried to zoom image the drawn rectangles needs to be placed on the drawn area.
2. Also draw another rectangle (in zoomed mode).
3. when i zommed out the rectangle needs to resized.
How can i achieve this.
I achieved this by using graphics.drawrectangle but i don't want to draw rectangle on the image because it's stay permanently on the image.
Please help on this......
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
using System.Xml;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public ArrayList goZones = null;
public int a, b, c, d, k;
bool f, g2 = false, g3 = false;
private PosSizableRect nodeSelected = PosSizableRect.None;
Bitmap mybitmap;
Point w;
string file = "";
//SaveFileDialog SaveFD1 = new SaveFileDialog();
Size sz1;
Graphics g;
Image image;
Rectangle rect, rect1;
public static List<Rectangle> rectangles = new List<Rectangle>();
public static List<string> lab = new List<string>();
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
}
public void ZoomIn()
{
//pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
if (sz1.Width >= 800 * 6)
MessageBox.Show("Max ZoomIn");
else {
sz1.Width += 100;
sz1.Height += 100;
pictureBox1.Size = sz1;
c = 0;
}
zoominToolStripMenuItem1.Enabled = true;
}
public void ZoomOut()
{
if (sz1.Height == 650 || sz1.Height == 800)
{
MessageBox.Show("Max ZoomOut");
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
else {
//pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
sz1.Width -= 100;
sz1.Height -= 100;
pictureBox1.Size = sz1;
c = 0;
}
zoomOutToolStripMenuItem1.Enabled = true;
}
private void shortcut()
{
if (zoominToolStripMenuItem1.Checked == true)
ZoomIn();
// ZoomIn(pictureBox1);
else if (zoomOutToolStripMenuItem1.Checked == true)
ZoomOut();
//ZoomOut(pictureBox1);
else if (rotateToolStripMenuItem.Checked == true)
Rotate();
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFD.FileName = "";
OpenFD.Title = "open image";
OpenFD.InitialDirectory = "C";
OpenFD.Filter = "JPEG|*.jpg|Bmp|*.bmp|All Files|*.*.*";
if (OpenFD.ShowDialog() == DialogResult.OK)
{
file = OpenFD.FileName;
image = Image.FromFile(file);
pictureBox1.Image = image;
sz1.Width = 800;
sz1.Height = 650;
f = false;
pictureBox1.Image = resizeimage(pictureBox1.Image, sz1);
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = false;
zoningToolStripMenuItem.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
zoningToolStripMenuItem.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
label1.Text = "";
rectangles.Clear();
lab.Clear();
f = true;
mybitmap = null;
label1.Visible = false;
}
}
private Image resizeimage(Image my, Size sz1)
{
double ratio = 0d;
double myThumbWidth = 0d;
double myThumbHeight = 0d;
Bitmap bp;
if (f == false)
{
if ((my.Width / Convert.ToDouble(sz1.Width)) &gt; (my.Height /
Convert.ToDouble(sz1.Height)))
ratio = Convert.ToDouble(my.Width) / Convert.ToDouble(sz1.Width);
else ratio = Convert.ToDouble(my.Height) / Convert.ToDouble(sz1.Height);
}
else if (f == true)
{
if ((Convert.ToDouble(sz1.Width) / my.Width) &gt; (Convert.ToDouble(sz1.Height)) / my.Height)
ratio = Convert.ToDouble(my.Width) / Convert.ToDouble(sz1.Width);
else ratio = Convert.ToDouble(my.Height) / Convert.ToDouble(sz1.Height);
}
myThumbHeight = Math.Ceiling(my.Height / ratio);
myThumbWidth = Math.Ceiling(my.Width / ratio);
Size thumbSize = new Size((int)myThumbWidth, (int)myThumbHeight);
bp = new Bitmap(sz1.Width, sz1.Height);
bp.SetResolution(300, 300);
c = (sz1.Width - thumbSize.Width) / 2;
d = (sz1.Height - thumbSize.Height);
System.Drawing.Graphics g = Graphics.FromImage(bp);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
rect = new Rectangle(c, d, thumbSize.Width, thumbSize.Height);
k = rect.Height;
g.DrawImage(my, rect, 0, 0, my.Width, my.Height, GraphicsUnit.Pixel);
if (f == false)
{
sz1 = bp.Size;
pictureBox1.Size = sz1;
}
rect = new Rectangle(0, 0, 0, 0);
return (bp);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (rectangles.Count != 0)
{
f = false;
elocation(w);
d = c;
if (f == true)
{
rect = new Rectangle(rectangles[d].X, rectangles[d].Y, rectangles[d].Width, rectangles[d].Height);
f = false;
g3 = true;
g2 = true;
}
else {
g2 = false;
}
}
else g2 = false;
if (mybitmap == null)
{
mybitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);
mybitmap.SetResolution(300, 300);
}
if (g2 == true)
{
nodeSelected = PosSizableRect.None;
nodeSelected = GetNodeSelectable(e.Location);
a = e.X;
b = e.Y;
}
else {
rect = new Rectangle(e.X, e.Y, 0, 0);
g3 = false;
}
//pictureBox1.Invalidate();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (mybitmap == null)
{
return;
}
using (Pen pen = new Pen(Color.Green, 2))
{
paintworks();
if (f == true)
{
f = false;
pen.Color = Color.Red;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
c = 0;
foreach (Rectangle r in rectangles)
{
e.Graphics.DrawRectangle(pen, r);
e.Graphics.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 8F), new SolidBrush(Color.Red), r);
c++;
}
pen.Color = Color.Green;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
e.Graphics.DrawRectangle(pen, rect);
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
foreach (PosSizableRect pos in Enum.GetValues(typeof(PosSizableRect)))
{
e.Graphics.DrawRectangle(pen, GetRect(pos));
}
}
else {
pen.Color = Color.Red;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
e.Graphics.DrawRectangle(pen, rect);
c = 0;
foreach (Rectangle r in rectangles)
{
e.Graphics.DrawRectangle(pen, r);
e.Graphics.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 8F), new SolidBrush(Color.Red), r);
c++;
}
}
}
pictureBox1.Invalidate();
return;
}
private void paintworks()
{
if (MouseButtons != MouseButtons.Left)
g3 = false;
if (g3 == false)
{
f = false;
foreach (Rectangle r in rectangles)
{
if ((w.X &gt;= r.X &amp;&amp; w.X &lt;= (r.X + r.Width)) &amp;&amp; (w.Y &gt;= r.Y &amp;&amp; w.Y &lt;= r.Y + r.Height))
{
f = true;
rect = new Rectangle(r.X, r.Y, r.Width, r.Height);
break;
}
}
}
else f = true;
}
private void zoominToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
if (zoningToolStripMenuItem.Checked == true)
comman();
zoominToolStripMenuItem1.Checked = true;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = false;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
sz1 = pictureBox1.Size;
shortcut();
}
}
private void zoomOutToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
if (zoningToolStripMenuItem.Checked == true)
comman();
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = true;
resetToolStripMenuItem1.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = false;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
shortcut();
}
}
private void resetToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = true;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
if (f == true)
f = false;
else {
f = false;
comman();
}
sz1.Width = 800;
sz1.Height = 650;
pictureBox1.Image = resizeimage(pictureBox1.Image, sz1);
pictureBox1.Size = sz1;
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
}
public void comman()
{
if (!(mybitmap == null))
{
if (!(rectangles.Count == 0))
{
using (g = Graphics.FromImage(pictureBox1.Image))
{
using (Pen pen = new Pen(Color.Red, 2))
{
c = 0;
foreach (Rectangle r in rectangles)
{
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
g.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 2.75F), new SolidBrush(label1.ForeColor), r);
g.DrawRectangle(pen, r);
c++;
}
}
}
}
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (mybitmap == null)
{
return;
}
if (e.Button == MouseButtons.Left)
{
if (g2 == false)
{
c = -1;
f = false;
elocation(w);
if (f== true)
{
if(g3== false)
f=false;
}
if (f == true)
{
rect = new Rectangle(e.X, e.Y, rectangles[c].Width, rectangles[c].Height);
rectangles.RemoveAt(c);
rectangles.Insert(c, rect);
f = false;
}
else {
if (rect.X + rect.Width &gt;= 660 || rect.Y + rect.Height &gt;= k || e.X &gt;= 800)
{
borderrectangle(w);
}
else {
f = false;
cond();
if (f == true)
{
MessageBox.Show("Cannot draw Rectangle over another Rectangle", "Warning");
f = false;
rect = new Rectangle(0, 0, 0, 0);
}
else rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
}
}
}
else {
if (g3 == false)
{
f = false;
cond();
if (f == false)
{
g2 = false;
f = false;
return;
}
else f = false;
}
coordinatechanges(w);
a = e.X;
b = e.Y;
}
}
pictureBox1.Invalidate();
}
private void elocation(Point n)
{
c = -1;
foreach (Rectangle r in rectangles)
{
if ((n.X &gt;= r.X &amp;&amp; n.X &lt;= (r.X + r.Width)) &amp;&amp; (n.Y &gt;= r.Y &amp;&amp; n.Y &lt;= r.Y + r.Height))
{
f = true;
c++;
break;
}
c++;
}
}
private void borderrectangle(Point n)
{
if (rect.X + rect.Width &gt;= 660 &amp;&amp; rect.Y + rect.Height &gt;= k || n.X &gt;= 800)
{
if (rect.X + rect.Width &gt;= 660)
rect.X = 660 - rect.Width;
if (rect.Y + rect.Height &gt;= k)
rect.Y = k - rect.Height;
cond();
borderrect();
}
else if (rect.X + rect.Width &gt;= 660)
{
rect.X = 660 - rect.Width;
rect = new Rectangle(rect.Left, rect.Top, rect.Width, n.Y - rect.Top);
}
else if (rect.Y + rect.Height &gt;= k)
{
rect.Y = k - rect.Height;
rect = new Rectangle(rect.Left, rect.Top, n.X - rect.Left, rect.Height);
}
}
private void borderrect()
{
if (f == true)
{
rectangles.RemoveAt(c);
rectangles.Insert(c, rect);
lab.RemoveAt(c);
lab.Insert(c, "");
}
else {
f = false;
rectangles.Add(rect);
lab.Add("");
contextMenuStrip1.Show(rect.X + 100, rect.Y + 100);
}
}
//private void graphicdraw()
//{
// using (g = Graphics.FromImage(mybitmap))
// {
// g.Clear(Color.Transparent);
// c = 0;
// foreach (Rectangle r in rectangles)
// {
// //draw(r, lab[c].ToString());
// c++;
// }
// pictureBox1.Invalidate();
// }
//}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (rectangles.Count == 0)
{
rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
if (rect.Width &lt;= 0 || rect.Height &lt;= 0)
{
contextMenuStrip1.Visible = false;
MessageBox.Show("Reverse croping not allowed");
}
else {
rectangles.Add(rect);
pictureBox1.Invalidate();
if (rectangles.Count != 0 &amp;&amp; rectangles.Count != lab.Count)
{
if (label1.Text == "")
{
label1.Text = "";
lab.Add(label1.Text);
}
}
}
}
else {
f = false;
cond();
if (f == false)
{
g2 = false;
if (rect.Height != 0 &amp;&amp; rect.Width != 0)
{
if (rect.Width &lt;= 0 || rect.Height &lt;= 0)
{
rect = new Rectangle(0, 0, 0, 0);
contextMenuStrip1.Visible = false;
MessageBox.Show("Reverse croping not allowed");
}
else {
rectangles.Add(rect);
if (rectangles.Count != 0 &amp;&amp; rectangles.Count != lab.Count)
{
if (label1.Text == "")
{
label1.Text = "";
lab.Add(label1.Text);
}
}
}
}
else contextMenuStrip1.Visible = false;
}
else {
f = false;
}
}
}
private void cond()
{
c = -1;
foreach (Rectangle r in rectangles)
{
if ((rect.X &gt;= r.X &amp;&amp; rect.X &lt;= (r.X + r.Width)) &amp;&amp; (rect.Y &gt;= r.Y &amp;&amp; rect.Y &lt;= r.Y + r.Height))
{
rect = new Rectangle(r.X, r.Y, r.Width, r.Height);
c++;
f = true;
break;
}
c++;
}
}
}
}
modified on Tuesday, July 13, 2010 1:03 AM
quires
1. when tried to zoom image the drawn rectangles needs to be placed on the drawn area.
2. Also draw another rectangle (in zoomed mode).
3. when i zommed out the rectangle needs to resized.
How can i achieve this.
I achieved this by using graphics.drawrectangle but i don't want to draw rectangle on the image because it's stay permanently on the image.
Please help on this......
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
using System.Xml;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public ArrayList goZones = null;
public int a, b, c, d, k;
bool f, g2 = false, g3 = false;
private PosSizableRect nodeSelected = PosSizableRect.None;
Bitmap mybitmap;
Point w;
string file = "";
//SaveFileDialog SaveFD1 = new SaveFileDialog();
Size sz1;
Graphics g;
Image image;
Rectangle rect, rect1;
public static List<Rectangle> rectangles = new List<Rectangle>();
public static List<string> lab = new List<string>();
public Form1()
{
InitializeComponent();
this.DoubleBuffered = true;
}
public void ZoomIn()
{
//pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
if (sz1.Width >= 800 * 6)
MessageBox.Show("Max ZoomIn");
else {
sz1.Width += 100;
sz1.Height += 100;
pictureBox1.Size = sz1;
c = 0;
}
zoominToolStripMenuItem1.Enabled = true;
}
public void ZoomOut()
{
if (sz1.Height == 650 || sz1.Height == 800)
{
MessageBox.Show("Max ZoomOut");
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
else {
//pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
sz1.Width -= 100;
sz1.Height -= 100;
pictureBox1.Size = sz1;
c = 0;
}
zoomOutToolStripMenuItem1.Enabled = true;
}
private void shortcut()
{
if (zoominToolStripMenuItem1.Checked == true)
ZoomIn();
// ZoomIn(pictureBox1);
else if (zoomOutToolStripMenuItem1.Checked == true)
ZoomOut();
//ZoomOut(pictureBox1);
else if (rotateToolStripMenuItem.Checked == true)
Rotate();
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFD.FileName = "";
OpenFD.Title = "open image";
OpenFD.InitialDirectory = "C";
OpenFD.Filter = "JPEG|*.jpg|Bmp|*.bmp|All Files|*.*.*";
if (OpenFD.ShowDialog() == DialogResult.OK)
{
file = OpenFD.FileName;
image = Image.FromFile(file);
pictureBox1.Image = image;
sz1.Width = 800;
sz1.Height = 650;
f = false;
pictureBox1.Image = resizeimage(pictureBox1.Image, sz1);
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = false;
zoningToolStripMenuItem.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
zoningToolStripMenuItem.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
label1.Text = "";
rectangles.Clear();
lab.Clear();
f = true;
mybitmap = null;
label1.Visible = false;
}
}
private Image resizeimage(Image my, Size sz1)
{
double ratio = 0d;
double myThumbWidth = 0d;
double myThumbHeight = 0d;
Bitmap bp;
if (f == false)
{
if ((my.Width / Convert.ToDouble(sz1.Width)) &gt; (my.Height /
Convert.ToDouble(sz1.Height)))
ratio = Convert.ToDouble(my.Width) / Convert.ToDouble(sz1.Width);
else ratio = Convert.ToDouble(my.Height) / Convert.ToDouble(sz1.Height);
}
else if (f == true)
{
if ((Convert.ToDouble(sz1.Width) / my.Width) &gt; (Convert.ToDouble(sz1.Height)) / my.Height)
ratio = Convert.ToDouble(my.Width) / Convert.ToDouble(sz1.Width);
else ratio = Convert.ToDouble(my.Height) / Convert.ToDouble(sz1.Height);
}
myThumbHeight = Math.Ceiling(my.Height / ratio);
myThumbWidth = Math.Ceiling(my.Width / ratio);
Size thumbSize = new Size((int)myThumbWidth, (int)myThumbHeight);
bp = new Bitmap(sz1.Width, sz1.Height);
bp.SetResolution(300, 300);
c = (sz1.Width - thumbSize.Width) / 2;
d = (sz1.Height - thumbSize.Height);
System.Drawing.Graphics g = Graphics.FromImage(bp);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
rect = new Rectangle(c, d, thumbSize.Width, thumbSize.Height);
k = rect.Height;
g.DrawImage(my, rect, 0, 0, my.Width, my.Height, GraphicsUnit.Pixel);
if (f == false)
{
sz1 = bp.Size;
pictureBox1.Size = sz1;
}
rect = new Rectangle(0, 0, 0, 0);
return (bp);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (rectangles.Count != 0)
{
f = false;
elocation(w);
d = c;
if (f == true)
{
rect = new Rectangle(rectangles[d].X, rectangles[d].Y, rectangles[d].Width, rectangles[d].Height);
f = false;
g3 = true;
g2 = true;
}
else {
g2 = false;
}
}
else g2 = false;
if (mybitmap == null)
{
mybitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);
mybitmap.SetResolution(300, 300);
}
if (g2 == true)
{
nodeSelected = PosSizableRect.None;
nodeSelected = GetNodeSelectable(e.Location);
a = e.X;
b = e.Y;
}
else {
rect = new Rectangle(e.X, e.Y, 0, 0);
g3 = false;
}
//pictureBox1.Invalidate();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (mybitmap == null)
{
return;
}
using (Pen pen = new Pen(Color.Green, 2))
{
paintworks();
if (f == true)
{
f = false;
pen.Color = Color.Red;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
c = 0;
foreach (Rectangle r in rectangles)
{
e.Graphics.DrawRectangle(pen, r);
e.Graphics.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 8F), new SolidBrush(Color.Red), r);
c++;
}
pen.Color = Color.Green;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
e.Graphics.DrawRectangle(pen, rect);
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
foreach (PosSizableRect pos in Enum.GetValues(typeof(PosSizableRect)))
{
e.Graphics.DrawRectangle(pen, GetRect(pos));
}
}
else {
pen.Color = Color.Red;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
e.Graphics.DrawRectangle(pen, rect);
c = 0;
foreach (Rectangle r in rectangles)
{
e.Graphics.DrawRectangle(pen, r);
e.Graphics.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 8F), new SolidBrush(Color.Red), r);
c++;
}
}
}
pictureBox1.Invalidate();
return;
}
private void paintworks()
{
if (MouseButtons != MouseButtons.Left)
g3 = false;
if (g3 == false)
{
f = false;
foreach (Rectangle r in rectangles)
{
if ((w.X &gt;= r.X &amp;&amp; w.X &lt;= (r.X + r.Width)) &amp;&amp; (w.Y &gt;= r.Y &amp;&amp; w.Y &lt;= r.Y + r.Height))
{
f = true;
rect = new Rectangle(r.X, r.Y, r.Width, r.Height);
break;
}
}
}
else f = true;
}
private void zoominToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
if (zoningToolStripMenuItem.Checked == true)
comman();
zoominToolStripMenuItem1.Checked = true;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = false;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
sz1 = pictureBox1.Size;
shortcut();
}
}
private void zoomOutToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
if (zoningToolStripMenuItem.Checked == true)
comman();
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = true;
resetToolStripMenuItem1.Checked = false;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = false;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
shortcut();
}
}
private void resetToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (file == "")
MessageBox.Show("Open a file");
else {
zoominToolStripMenuItem1.Checked = false;
zoomOutToolStripMenuItem1.Checked = false;
resetToolStripMenuItem1.Checked = true;
rotateToolStripMenuItem.Checked = false;
deleteToolStripMenuItem.Checked = false;
zoominToolStripMenuItem1.Enabled = true;
zoomOutToolStripMenuItem1.Enabled = true;
resetToolStripMenuItem1.Enabled = true;
rotateToolStripMenuItem.Enabled = true;
pictureBox2.Visible = false;
if (f == true)
f = false;
else {
f = false;
comman();
}
sz1.Width = 800;
sz1.Height = 650;
pictureBox1.Image = resizeimage(pictureBox1.Image, sz1);
pictureBox1.Size = sz1;
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
}
public void comman()
{
if (!(mybitmap == null))
{
if (!(rectangles.Count == 0))
{
using (g = Graphics.FromImage(pictureBox1.Image))
{
using (Pen pen = new Pen(Color.Red, 2))
{
c = 0;
foreach (Rectangle r in rectangles)
{
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
g.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 2.75F), new SolidBrush(label1.ForeColor), r);
g.DrawRectangle(pen, r);
c++;
}
}
}
}
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (mybitmap == null)
{
return;
}
if (e.Button == MouseButtons.Left)
{
if (g2 == false)
{
c = -1;
f = false;
elocation(w);
if (f== true)
{
if(g3== false)
f=false;
}
if (f == true)
{
rect = new Rectangle(e.X, e.Y, rectangles[c].Width, rectangles[c].Height);
rectangles.RemoveAt(c);
rectangles.Insert(c, rect);
f = false;
}
else {
if (rect.X + rect.Width &gt;= 660 || rect.Y + rect.Height &gt;= k || e.X &gt;= 800)
{
borderrectangle(w);
}
else {
f = false;
cond();
if (f == true)
{
MessageBox.Show("Cannot draw Rectangle over another Rectangle", "Warning");
f = false;
rect = new Rectangle(0, 0, 0, 0);
}
else rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
}
}
}
else {
if (g3 == false)
{
f = false;
cond();
if (f == false)
{
g2 = false;
f = false;
return;
}
else f = false;
}
coordinatechanges(w);
a = e.X;
b = e.Y;
}
}
pictureBox1.Invalidate();
}
private void elocation(Point n)
{
c = -1;
foreach (Rectangle r in rectangles)
{
if ((n.X &gt;= r.X &amp;&amp; n.X &lt;= (r.X + r.Width)) &amp;&amp; (n.Y &gt;= r.Y &amp;&amp; n.Y &lt;= r.Y + r.Height))
{
f = true;
c++;
break;
}
c++;
}
}
private void borderrectangle(Point n)
{
if (rect.X + rect.Width &gt;= 660 &amp;&amp; rect.Y + rect.Height &gt;= k || n.X &gt;= 800)
{
if (rect.X + rect.Width &gt;= 660)
rect.X = 660 - rect.Width;
if (rect.Y + rect.Height &gt;= k)
rect.Y = k - rect.Height;
cond();
borderrect();
}
else if (rect.X + rect.Width &gt;= 660)
{
rect.X = 660 - rect.Width;
rect = new Rectangle(rect.Left, rect.Top, rect.Width, n.Y - rect.Top);
}
else if (rect.Y + rect.Height &gt;= k)
{
rect.Y = k - rect.Height;
rect = new Rectangle(rect.Left, rect.Top, n.X - rect.Left, rect.Height);
}
}
private void borderrect()
{
if (f == true)
{
rectangles.RemoveAt(c);
rectangles.Insert(c, rect);
lab.RemoveAt(c);
lab.Insert(c, "");
}
else {
f = false;
rectangles.Add(rect);
lab.Add("");
contextMenuStrip1.Show(rect.X + 100, rect.Y + 100);
}
}
//private void graphicdraw()
//{
// using (g = Graphics.FromImage(mybitmap))
// {
// g.Clear(Color.Transparent);
// c = 0;
// foreach (Rectangle r in rectangles)
// {
// //draw(r, lab[c].ToString());
// c++;
// }
// pictureBox1.Invalidate();
// }
//}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (rectangles.Count == 0)
{
rect = new Rectangle(rect.Left, rect.Top, e.X - rect.Left, e.Y - rect.Top);
if (rect.Width &lt;= 0 || rect.Height &lt;= 0)
{
contextMenuStrip1.Visible = false;
MessageBox.Show("Reverse croping not allowed");
}
else {
rectangles.Add(rect);
pictureBox1.Invalidate();
if (rectangles.Count != 0 &amp;&amp; rectangles.Count != lab.Count)
{
if (label1.Text == "")
{
label1.Text = "";
lab.Add(label1.Text);
}
}
}
}
else {
f = false;
cond();
if (f == false)
{
g2 = false;
if (rect.Height != 0 &amp;&amp; rect.Width != 0)
{
if (rect.Width &lt;= 0 || rect.Height &lt;= 0)
{
rect = new Rectangle(0, 0, 0, 0);
contextMenuStrip1.Visible = false;
MessageBox.Show("Reverse croping not allowed");
}
else {
rectangles.Add(rect);
if (rectangles.Count != 0 &amp;&amp; rectangles.Count != lab.Count)
{
if (label1.Text == "")
{
label1.Text = "";
lab.Add(label1.Text);
}
}
}
}
else contextMenuStrip1.Visible = false;
}
else {
f = false;
}
}
}
private void cond()
{
c = -1;
foreach (Rectangle r in rectangles)
{
if ((rect.X &gt;= r.X &amp;&amp; rect.X &lt;= (r.X + r.Width)) &amp;&amp; (rect.Y &gt;= r.Y &amp;&amp; rect.Y &lt;= r.Y + r.Height))
{
rect = new Rectangle(r.X, r.Y, r.Width, r.Height);
c++;
f = true;
break;
}
c++;
}
}
}
}
modified on Tuesday, July 13, 2010 1:03 AM