Split Graphic into pieces c#
My Code:
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;
using TouchlessLib;
namespace WebCam2
{
public partial class Form1 : Form
{
TouchlessMgr ngr = new TouchlessMgr();
Bitmap _overlay;
public Form1()
{
InitializeComponent();
foreach (Camera c in ngr.Cameras)
{
listBox1.Items.Add(c);
listBox1.SelectedValueChanged += new EventHandler(listBox1_SelectedValueChanged);
}
}
void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
ngr.CurrentCamera = (Camera) listBox1.SelectedItem;
ngr.CurrentCamera.OnImageCaptured += c_OnImageCaptured;
}
void c_OnImageCaptured(object sender, CameraEventArgs e)
{
pictureBox1.Image = ngr.CurrentCamera.GetCurrentImage();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
public EventHandler<CameraEventArgs> cam_OnImageCaptured { get; set; }
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
List <Graphics> list = new List <Graphics>();
ngr.RefreshCameraList();
Graphics g = Graphics.FromImage(pictureBox1.Image);
Brush redBrush = new SolidBrush(Color.Red开发者_运维百科);
Pen pen = new Pen(redBrush,3);
for ( int i = 0; i < pictureBox1.Width; i = (pictureBox1.Width/3)+i)
{
for (int y = 0; y < pictureBox1.Height; y = (pictureBox1.Height / 3) + y)
{
g.DrawRectangle(pen, i, y, pictureBox1.Width / 3, pictureBox1.Height / 3);
}
}
g.Dispose();
}
}
}
This code works only sometimes not everytime, i dont know whats wrong with the code. I also want to split the image into a 3x3 matrix but i do not know how.
Please help!
Output(1st Time no frame,2nd time right):
ImageLink:
http://www.imagebanana.com/view/4j58i05z/Unbenannt2.png
Add pictureBox1.Invalidate();
after g.Dispose
for demonstartino purposes, I've added a button to a form and a second picturebox, with an integer that cycles from 1-9. Obviously you won't need to do this. here is the code:
private void button1_Click(object sender, EventArgs e)
{
mLastRect++;
if (mLastRect > 9)
mLastRect = 0;
Bitmap part = new Bitmap(pictureBox1.Image.Width / 3, pictureBox1.Image.Height / 3);
Graphics g = Graphics.FromImage(part);
Rectangle partRect = new Rectangle(0, 0, part.Width, part.Height);
Rectangle sourceRect = GetRect(mLastRect);
g.DrawImage(pictureBox1.Image, partRect, sourceRect, GraphicsUnit.Pixel);
pictureBox2.Image = part;
}
private Rectangle GetRect(int rectNo)
{
int rectLeft = (rectNo % 3) * (pictureBox1.Image.Width / 3);
int rectTop = (rectNo / 3) * (pictureBox1.Image.Height / 3);
return new Rectangle(rectLeft, rectTop, pictureBox1.Image.Width / 3, pictureBox1.Image.Height / 3);
}
精彩评论