明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1495|回复: 0

[.NET资料] WPF使用梦想OCX插件入门

[复制链接]
发表于 2018-11-8 10:06:47 | 显示全部楼层 |阅读模式
本帖最后由 MxDraw 于 2018-11-8 10:11 编辑

获取控件下载控件安装包
注册控件
注册控件之前请先退出杀毒软件(如360杀毒软件),双击运行CopyReleaseFile.bat和CopyReleaseFileX64.bat获取批处理文件,并以管理员身份运行RegistMxDrawX.exe 实现批注册或以管理员方式运行控件 \Bin\vc100\RegistMxDrawX.exe 。
新建一个工程
1、运行Visual Studio,选择Visual C#,使用Windows 窗体应用 (.NET Framework) 新建一个工程WindowsFormsApp1。在工具箱中找到MxDrawX52 Control勾选并确定,将MxDrawX52 Control拖放至WinForm窗口,此时WindowsFormsApp1\WindowsFormsApp1\obj\Debug路径下会多出两个文件(AxInterop.MxDrawXLib.dll和Interop.MxDrawXLib.dll)

3、新建一个WPF工程WpfApp1,把AxInterop.MxDrawXLib.dllInterop.MxDrawXLib.dll和MxDrawX.ocx(64位系统复制MxDraw52\Bin\vc100x64d\MxDrawX.ocx;32位系统复制MxDraw52\Bin\vc100d\MxDrawX.ocx)分别复制到新建的WPF工程的WpfApp1\WpfApp1\bin\Debug和WpfApp1\WpfApp1\obj\Debug路径下。
右键添加引用,浏览引用WpfApp1\WpfApp1\bin\Debug路径下的AxInterop.MxDrawXLib.dll、Interop.MxDrawXLib.dll;
在.net下分别添加引用WindowsFormsIntegration和System.Windows.Forms。

Wpf工程添加引用完成后如下:

在工具箱中找到MxDrawX52Control勾选并确定.

完成以上操作之后,工具箱空白处右键选择全部显示常规一栏会出现MxDrawX52Control,如下所示:

添加程序集引用:
using MxDrawXLib;
实例化对象
// 创建控件对象
AxMxDrawXLib.AxMxDrawX axMxDrawX = new AxMxDrawXLib.AxMxDrawX();
public MainWindow()
{
   InitializeComponent();
   //开始初始化控件对象
   ((System.ComponentModel.ISupportInitialize)axMxDrawX).BeginInit();
   // 创建host 对象
   System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost() { Child = axMxDrawX };
   // 结束初始化
   ((System.ComponentModel.ISupportInitialize)axMxDrawX).EndInit();
   // 将对象加入到面板中
   mxdraw.Children.Add(host);// mxdraw为Window/Grid名称(name属性)
   axMxDrawX.ImplementCommandEvent += new AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEventHandler(this.axMxDrawX_ImplementCommandEvent);
}
在这里以打开文件和画直线为例,打开文件实现代码如下:
// 打开文件.
Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
ofd.Filter = "dwg 文件(*.dwg)|*.dwg";
if (ofd.ShowDialog() == true)
{
   axMxDrawX.OpenDwgFile(ofd.FileName);
}
axMxDrawX.ZoomAll();
效果如下所示:
绘制直线实现代码如下:
//绘制直线
private void Drawline()
{
   MxDrawUtility mxUtility = new MxDrawUtility();
   MxDrawPoint point = (MxDrawPoint)(mxUtility.GetPoint(null, "点取第一点:"));
   if (point == null)
   {
       MessageBox.Show("用户取消..");
       return;
   }
   MxDrawPoint point2 = (MxDrawPoint)(mxUtility.GetPoint(point, "点取第二点:"));
   if (point2 == null)
   {
       MessageBox.Show("用户取消..");
       return;
   }
   axMxDrawX.DrawLine(point.x, point.y, point2.x, point2.y);
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
   axMxDrawX.DoCommand(1);
}
private void axMxDrawX_ImplementCommandEvent(object sender, AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEvent e)
{
   if (e.iCommandId == 1)
   {
       // 执行绘直线命令。
       Drawline();
}
}
效果如下所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-28 19:03 , Processed in 0.168461 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表