1. 环境准备与基础配置
在开始之前,我们需要准备好开发环境。这里我使用的是Visual Studio 2022和.NET 6框架,Halcon版本是20.11。如果你还在用老版本,建议升级到最新版,因为新版本对WPF的支持更好,性能也有明显提升。
首先创建一个新的WPF应用程序项目。在解决方案资源管理器中右键点击"引用",选择"添加引用"。这里需要添加两个关键的Halcon DLL文件:
- halcondotnet.dll
- hdevenginedotnet.dll
这两个文件通常位于Halcon安装目录的bin/dotnet目录下。我建议直接把它们复制到项目目录中,这样部署时不会出问题。在实际项目中,我遇到过因为路径问题导致程序找不到DLL的情况,所以这个细节很重要。
接下来是XAML部分的配置。在MainWindow.xaml中添加Halcon命名空间引用:
xml复制<Window x:Class="HalconWpfDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:halcon="http://schemas.mvtec.com/halcondotnet"
Title="Halcon WPF Demo" Height="600" Width="800">
<Grid>
<halcon:HSmartWindowControlWPF x:Name="HsmartWindow"/>
</Grid>
</Window>
这里我直接使用了HSmartWindowControlWPF控件,而不是基础的HWindowControlWPF。两者的区别我们后面会详细讲解。先确保项目能正常编译运行,如果看到空白的Halcon窗口,说明环境配置成功了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 图像加载与显示
现在我们来实现最基本的图像加载功能。在WPF中,我们需要添加一个按钮来触发图像选择:
xml复制<StackPanel Grid.Column="1" VerticalAlignment="Top">
<Button Content="加载图像" Margin="10" Padding="10" Click="BtnLoadImage_Click"/>
</StackPanel>
对应的C#代码实现图像加载:
csharp复制private void BtnLoadImage_Click(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "图像文件|*.jpg;*.png;*.bmp|所有文件|*.*",
DefaultExt = ".png"
};
if (openFileDialog.ShowDialog() == true)
{
try
{
var image = new HImage();
image.ReadImage(openFileDialog.FileName);
// 清空窗口并显示新图像
HsmartWindow.HalconWindow.ClearWindow();
HsmartWindow.HalconWindow.DispObj(image);
// 自动调整显示比例
HsmartWindow.SetFullImagePart();
}
catch (HalconException ex)
{
