我的代码:
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();
}
}
}
此代码有时不会每次都有效,我不知道代码有什么问题。 我也想将图像分成3x3矩阵,但我不知道如何。
请帮忙!
输出(第1次无帧,第2次右侧):
ImageLink的:
答案 0 :(得分:0)
在g.Dispose
之后添加pictureBox1.Invalidate();
答案 1 :(得分:0)
出于demonstartino的目的,我在表格和第二个图片框中添加了一个按钮,其整数从1-9开始。显然你不需要这样做。这是代码:
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);
}