Halcon的HSmartWindowControl实现鼠标缩放平移图像以及画区域操作
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HalconWindowZoom
{
public partial class Form1 : Form
{
HalconDotNet.HObject image;
HalconDotNet.HTuple hWindow;
public Form1()
{
InitializeComponent();
hWindow = hSmartWindowControl1.HalconWindow;//初始化窗口变量
// 鼠标滚轮的响应函数注册
this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.my_MouseWheel);
}
private void Form1_Load(object sender, EventArgs e)
{
HalconDotNet.HOperatorSet.ReadImage(out image, "E:\\Kell\\vision\\gg.png");
HalconDotNet.HTuple imgWidth, imgHeight;
HalconDotNet.HOperatorSet.GetImageSize(image, out imgWidth, out imgHeight);
HalconDotNet.HOperatorSet.SetPart(hSmartWindowControl1.HalconID, 0, 0, imgHeight - 1, imgWidth - 1);
HalconDotNet.HOperatorSet.DispObj(image, hSmartWindowControl1.HalconID);
HalconDotNet.HTuple r1, c1, r2, c2;
HalconDotNet.HOperatorSet.GetPart(hSmartWindowControl1.HalconID, out r1, out c1, out r2 ,out c2);
HalconDotNet.HObject region;
HalconDotNet.HOperatorSet.Threshold(image, out region, 0, 55);
HalconDotNet.HOperatorSet.SetColor(hSmartWindowControl1.HalconID, "red");
HalconDotNet.HOperatorSet.DispObj(region, hSmartWindowControl1.HalconID);
HalconDotNet.HOperatorSet.SetPart(hWindowControl1.HalconID, 0, 0, imgHeight - 1, imgWidth - 1);
HalconDotNet.HOperatorSet.DispObj(image, hWindowControl1.HalconID);
HalconDotNet.HOperatorSet.SetColor(hWindowControl1.HalconID, "red");
HalconDotNet.HOperatorSet.DispObj(region, hWindowControl1.HalconID);
}
private void my_MouseWheel(object sender, MouseEventArgs e)
{
//System.Drawing.Point pt = this.Location;
System.Drawing.Point pt = hSmartWindowControl1.Location;
int leftBorder = hSmartWindowControl1.Location.X;
int rightBorder = hSmartWindowControl1.Location.X + hSmartWindowControl1.Size.Width;
int topBorder = hSmartWindowControl1.Location.Y;
int bottomBorder = hSmartWindowControl1.Location.Y + hSmartWindowControl1.Size.Height;
if (e.X > leftBorder && e.X < rightBorder && e.Y > topBorder && e.Y < bottomBorder)
{
MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks,
e.X - pt.X, e.Y - pt.Y, e.Delta);
hSmartWindowControl1.HSmartWindowControl_MouseWheel(sender, newe);
}
}
private void btn_Draw_Click(object sender, EventArgs e)
{
hWindowControl1.BringToFront();
hWindowControl1.Focus();
HalconDotNet.HTuple r1, c1, r2, c2;
HalconDotNet.HOperatorSet.GetPart(hSmartWindowControl1.HalconID, out r1, out c1, out r2, out c2);
HalconDotNet.HOperatorSet.SetPart(hWindowControl1.HalconID, r1, c1, r2, c2);
HalconDotNet.HOperatorSet.DispObj(image, hWindowControl1.HalconID);
HalconDotNet.HOperatorSet.SetColor(hWindowControl1.HalconID, "blue");
HalconDotNet.HOperatorSet.SetTposition(hWindowControl1.HalconID, r1+100, c1+100);
HalconDotNet.HOperatorSet.WriteString(hWindowControl1.HalconID, "Draw");
HalconDotNet.HOperatorSet.DrawRectangle1(hWindowControl1.HalconID, out r1, out c1, out r2, out c2);
HalconDotNet.HObject rectangle;
HalconDotNet.HOperatorSet.GenRectangle1(out rectangle, r1, c1, r2, c2);
HalconDotNet.HOperatorSet.DispObj(rectangle, hSmartWindowControl1.HalconID);
hSmartWindowControl1.BringToFront();
hSmartWindowControl1.Focus();
}
}
}