一.介绍
本项目是接收卫星视频流,并将视频播出,同时可在视频上编辑字幕的内容、位置、字体大小等。上一篇文章描述了C++怎么生成dll文件,地址,这篇文章讲C#调用dll完成字幕编辑功能。
二.步骤
C#新建项目这个过程就不讲了,只说调用dll的步骤。
1.引用非托管动态链接库,申明dll中每个方法的静态入口。
2.在C#代码中直接调用方法
是不是感觉很简单
三.代码
1.申明
public partial class DefineClass
{
[DllImport("cgTool.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void loadText2(String strText, [In]int uiTextX, [In]int uiTextY, [In]IntPtr pTextBuffer, [In] int x, [In] int y, int fh, int fw, string fontStr, int r, int g, int b);
//loadText针对于可以移动的多行字幕
[DllImport("cgTool.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void loadText3(String strText, int uiTextX, int uiTextY, IntPtr pTextBuffer, int x, int y, ref int bmw, int fh, int fw, string fontStr, int r, int g, int b);
[DllImport("cgTool.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void backPic(bool ifBack, String strText, [In]int uiTextX, [In]int uiTextY, [In]IntPtr pTextBuffer, [In] int x, [In] int y);
[DllImport("cgTool.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void AreaMove([In]int fieldNo, [In] IntPtr pCgSrcBuffer, [In] IntPtr pCgDecBuffer, [In] int ulWidth, [In] int ulHeight, [In] int ulMoveDirection, int ulMoveStep, ref int ulUp);
//areaMove2可以移动多行字幕
[DllImport("cgTool.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
public static extern void AreaMove2([In] IntPtr pCgSrcBuffer, [In] IntPtr pCgDecBuffer, [In] int ulWidth, [In] int ulHeight, int ulMoveStep, int bmw);
}
2.调用
DefineClass.loadText2("", XtraForm2.pos_x, XtraForm2.pos_y, m_pCgSrcBuffer, m_siVideoSize.x, m_siVideoSize.y, XtraForm2.m_height, XtraForm2.m_width, XtraForm2.fontStr, XtraForm2.r, XtraForm2.g, XtraForm2.b);