pb调用c#编写的dll(实例为画带箭头的线)

本人最近要在pb端做一个小的功能——在界面上任意指定位置画一条带箭头的线。这个时候发现单纯用pb来做无法完成(至少目前我没有找到简便的方法,知道的兄弟可以留言告知下),所以想用c#编写一个类库专门用于画线,同时也学习一下c#类库制作的相关流程,特此记录,以备后期查询使用。

1.c#编写dll类库

新建项目:

 

建立好项目之后,先添加引用,添加引用的方式自行百度。

 

设置项目相关属性

重新生成,重新生成时必须要有系统管理员权限,否者提示错误,生成失败。

生成好之后,会有相关文件的产生

将dll和tlb文件copy,放到pb程序根目录。

为了能直接用批处理文件自动注册,建议将regasm.exe文件copy到程序根目录,这个文件的版本是根据c#编写代码是所设置的.net版本而来。

在pb程序根目录中新建文本文件,名称为drawpen.bat,用于pb代码中调用。编写这个文件。如果需要注销可以在/codebase前面加入/u 

以上基本完成了所有调用前的准备工作,下面就是pb端调用的过程。

获取当前程序路径,判断是否有批处理文件,然后run。

新建窗口,在窗口中加入按钮,按钮中的代码如下图(因为c#的dll文件不是标准dll,所以只能用connecttonewobject连接,无法以外部函数的方式调用。)

这个里面有两点需要注意,1.parent指代父窗体,如果需要在其他的容器中划线就必须要传入其他容器的handle,比如datawindow等。2.c#端的坐标单位是像素,而在pb中是pbu所以这里要转换。

运行程序,点击按钮,效果如图。如果提示外部函数报错,绝大多数情况是当前的用户没有权限,这个上面也提到了,所以在开发时建议直接使用administrator这个用户,这个用户默认是关闭的,打开方式可以上网搜索。

修改:

刚才我发现这个线的锯齿效果非常差,为了达到尽量减少锯齿,查询相关资料后发现,在c#中的画图对象可以设置绘图质量,所以加入下面的代码。

加入之后重新生成,重新调用,结果如图。效果明显要高于于前面。

 

到此结束。

你可能感兴趣的:(pb)