我创建一个WPF程序,打算模仿一个winform调用halcon的示例,通过picturebox控件显示图片。
这是wpf的程序,加载了winform的库,添加一个picturebox控件
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<wfi:WindowsFormsHost x:Name="pictureBox" Width="200" Height="200" Margin="10,10"/>
</Grid>
</Window>
这是C#代码,根据示例抄了一遍,主要就是一个简单的读取图片然后显示图片
public partial class MainWindow : Window
{
private HTuple MainUI_Camera_WindowID;
public HObject RawImage = new HObject();
public MainWindow()
{
InitializeComponent();
OpenWindow();
LoadImage();
}
public void OpenWindow()
{
long m_lWindowRow = 0;
long m_lWindowColumn = 0;
HTuple Farther_windowHandle = this.pictureBox.Handle;
HOperatorSet.SetWindowAttr("background_color", "blue");
HOperatorSet.OpenWindow(m_lWindowRow, m_lWindowColumn, (HTuple)this.pictureBox.Width, (HTuple)this.pictureBox.Height,
Farther_windowHandle, "visible", "", out MainUI_Camera_WindowID);
}
public void LoadImage()
{
HOperatorSet.ReadImage(out RawImage, @"..\..\Image\01.bmp");
HTuple width = null;
HTuple height = null;
HOperatorSet.GetImageSize(RawImage, out width, out height);
HOperatorSet.SetColor(MainUI_Camera_WindowID, "yellow");
HOperatorSet.SetPart(MainUI_Camera_WindowID, 0, 0, height, width);
HOperatorSet.DispObj(RawImage, MainUI_Camera_WindowID);
HOperatorSet.SetTposition(MainUI_Camera_WindowID, width / 2, height / 2);
HOperatorSet.WriteString(MainUI_Camera_WindowID, "HelloWorld");
}
}
可是运行的时候,在winform下运行正常,控件在窗体中不会移动,但是在wpf下运行的时候,控件直接飞出了窗体,能随意拖动,请问这是为什么