跳到主要内容

添加显示工具栏和状态栏

· 阅读需 4 分钟
fengyu

通过Cognex Display工具栏,您可以在Cognex Display控件中操作图像,而Cognex Display状态栏将显示有关该图像的信息.

下图显示了Cognex Display控件以及工具栏和状态栏:

要将工具栏和状态栏添加到Visual Studio.NET应用程序,请执行以下步骤:

  1. 选择“项目”->“添加引用”,然后添加对程序集Cognex.VisionPro.Controls的引用,该程序集包含工具栏和状态栏的对象和实例。

  2. 将显示控件CogDisplay添加到Windows窗体中,如下图所示:

  1. 切换到Visual Studio.NET工具箱的VisionPro系统控制选项卡,然后选择CogDisplayToolbarV2,将CogDisplayToolbarV2控件添加到Windows窗体中 ,如下图所示:

  • 指针(用于选择和移动图形)
  • 平移光标(用于平移图像)
  • 放大光标(单击可放大)
  • 缩小光标(单击可缩小)
  • 使图像适合显示(根据需要平移和缩放)
  • 将图像缩放到100%(每个图像像素1个显示像素)
  • 像素网格线(放大时显示)
  • 子像素网格线(放大时显示)
  1. (可选)您可以选择将工具栏停靠在Windows窗体的顶部

注意:如果您的表单使用ToolStrips而不是工具栏,或者要将控件添加到现有工具栏,请使用CogDisplayToolStrip而不是工具栏控件

  1. 将工具栏连接到Cognex Display控件,如下面的C#示例所示,其中工具栏变量为cogDisplayToolbarV21,Display控件变量为cogDisplay1。
cogDisplayToolbarV21.Display = cogDisplay1;
  1. 从Visual Studio.NET工具箱中选择CogDisplayStatusBarV2

  2. 将CogDisplayStatusBarV2添加到Windows窗体中

  • 选择要显示的空间
  • 光标指针的坐标(在选定空间中)
  • 用于显示空间的弹出式菜单
  • 当前缩放系数
  • 光标指针上的像素值
  1. (可选)您可以选择将状态栏停靠在Windows窗体的底部

  2. 如以下C#示例所示,将状态栏连接到Cognex Display控件,其中状态栏变量为cogDisplayStatusBarV21,而Display控件变量为cogDisplay1。

cogDisplayStatusBarV21.Display = cogDisplay1;

工具栏和状态栏现在将与CogDisplay控件一起使用。

  1. 完整示例如下:
using Cognex.VisionPro.ImageFile;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UsingQB
{
public partial class Form7 : Form
{
CogImageFile ImageFile;
int counter;
int maxImages;
public Form7()
{
InitializeComponent();
InitializeDisplay();
}
/// <summary>
/// 初始化显示相关的控件,使得工具栏和状态栏可以与 cogDisplay1 进行交互。
/// 这通常是在应用程序启动时或窗体加载时调用,以确保用户界面中的各个部分能够正确地显示和控制图像的显示
/// </summary>
private void InitializeDisplay() {
cogDisplayToolbarV21.Display = cogDisplay1;
cogDisplayStatusBarV21.Display = cogDisplay1;
}
private void InitializeFifo()
{
ImageFile = new CogImageFile();
ImageFile.Open(textBoxFilePath.Text, CogImageFileModeConstants.Read);
counter = 0;
maxImages = ImageFile.Count;
}

private void button2_Click(object sender, EventArgs e)
{
using (OpenFileDialog fileDialog = new OpenFileDialog())
{
if (fileDialog.ShowDialog() == DialogResult.OK)
{
textBoxFilePath.Text = fileDialog.FileName;
}
}
InitializeFifo();


}

private void button1_Click(object sender, EventArgs e)
{
if (ImageFile == null)
{
MessageBox.Show("没有输入图像!");
}
if (counter == maxImages)
{
counter = 0;
}
cogDisplay1.Image = ImageFile[counter];
counter = counter + 1;
label1.Text = $"第{counter}/{maxImages}张";
}
}
}