在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪、透明度调整等一些操作,在网页可以快速实现我们所需功能。
一、设置背景图片
把图片作为背景图片可见但是不能编辑操作。
主要用到函数说明:
_DMxDrawX::DrawImageToBackground
绘光栅图到背景。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR sFileName  | 光栅图文件.DWGBMPJPG文件路径  | 
LONG lLeftUpX  | 栅图显示的在控件视区显示的左上角位置X,视区窗口坐标  | 
LONG lLeftUpY  | 栅图显示的在控件视区显示的左上角位置Y,视区窗口坐标  | 
c#中实现代码说明:
private void BackGroundImage(){    OpenFileDialog ofd = new OpenFileDialog();    ofd.Filter = "jpg文件(*.jpg)|*.jpg";      if (ofd.ShowDialog() != DialogResult.OK)        return;    Image tmpImage = null;    try    {        tmpImage = Image.FromFile(ofd.FileName);    }    catch(Exception exp)    {        MessageBox.Show(exp.Message);        return;    }    MxDrawPoint point = (MxDrawPoint)(axMxDrawX1.GetPoint(false, 0, 0,"\n点取插入点..."));    if (point == null)        return;    axMxDrawX1.DrawImageToBackground(ofd.FileName, (int)point.x, (int)point.y);} | 
js中实现代码说明:
function BackGroundImage() {    // 新建一个COM组件对象    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取图片的插入中点";    if (getPt.go() != 1) {        return;    }    var frstPt = getPt.value();    if (frstPt == null) {        return;    }    // 控件程序在磁盘的文件路径    var sImageFile = mxOcx.GetOcxAppPath() + "\\mxcad.jpg";    alert(sImageFile);    // 绘图制一个图象标记对象    //参数一为光栅图文件.DWGBMPJPG文件路径;参数二为栅图显示的在控件视区显示的左上角位置X,视区窗口坐标 ;    // 参数三为栅图显示的在控件视区显示的左上角位置Y,视区窗口坐标 ;    mxOcx.DrawImageToBackground(sImageFile,frstPt.x, frstPt.y );} | 
二、插入图片
在设计绘图时,需要插入外部图片,可以设置图片的缩放比例、旋转角度、图片显示文件名等属性。
主要用到函数说明:
_DMxDrawX::DrawImageMark
绘图制一个图象标记对象。详细说明如下:
| 参数 | 说明 | 
|---|---|
DOUBLE dPosX  | 绘制位置,是图片的中心点X  | 
DOUBLE dPosY  | 绘制位置,是图片的中心点y  | 
DOUBLE dScale  | 缩放比例,如果输入负数时,表示图片随视区大小缩放,负数的决对值表示图片的高度,图片宽度自动计算  | 
DOUBLE dAng  | 图片旋转角度  | 
BSTR pszFileName  | 图片显示文件名  | 
BSTR pszTwinkeImageFiles  | 闪烁时使用的ImageFile.,设置该文件后,调用MxDraw::TwinkeEnt后将交替闪烁显示。 可以同时设置多个闪烁文件,文件间用逗号隔开,比如: 1.jgp,2.jpg,3.jpg  | 
VARIANT_BOOL isSaveData  | 图片数据,是否随图保存  | 
c#中实现代码说明:
private void InsertImage(){    OpenFileDialog ofd = new OpenFileDialog();    ofd.Filter = "jpg文件(*.jpg)|*.jpg";    if (ofd.ShowDialog() != DialogResult.OK)        return;    Image tmpImage = null;    try    {        tmpImage = Image.FromFile(ofd.FileName);     }    catch(Exception exp)    {        MessageBox.Show(exp.Message);        return;    }    //点取插入点    MxDrawPoint point = (MxDrawPoint)(axMxDrawX1.GetPoint(false, 0, 0, "\n点取插入点..."));    if (point == null)        return;    // 绘图制一个图象标记对象    //参数一为绘制位置,是图片的中心点X ;参数二为绘制位置,是图片的中心点Y;参数三为缩放比例;参数四为旋转角度;    //参数五为图片显示文件名;参数六为闪烁文件设置;参数七为图片数据是否随图保存      axMxDrawX1.DrawImageMark(point.x, point.y, -100.0, 0.0, ofd.FileName, "", false);    MxDrawApplication app = new MxDrawApplication();    app.ZoomAll();} | 
js中实现代码说明:
function InsertImage() {    // 新建一个COM组件对象    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取图片的插入中点";    if (getPt.go() != 1) {        return;    }    var frstPt = getPt.value();    if (frstPt == null) {        return;    }    // 控件程序在磁盘的文件路径    var sImageFile = mxOcx.GetOcxAppPath() + "\\mxca.jpg";    alert(sImageFile);    // 绘图制一个图象标记对象    //参数一为绘制位置,是图片的中心点X ;参数二为绘制位置,是图片的中心点Y;参数三为缩放比例;参数四为旋转角度;    //参数五为图片显示文件名;参数六为闪烁文件设置;参数七为图片数据是否随图保存    mxOcx.DrawImageMark(frstPt.x, frstPt.y, -100.0, 0.0, sImageFile, "", false);} | 
三、替换图片
主要用到函数说明:
IMxDrawImageMark::ImageFile
图片文件路径。
c#中实现代码说明:
private void ModifyImage(){              MxDrawImageMark image = (MxDrawImageMark)axMxDrawX1.GetEntity("image");    if (image == null)        return;    if (image.ObjectName != "McDbMxImageMark")        return;      OpenFileDialog ofd = new OpenFileDialog();    ofd.Filter = "jpg文件(*.jpg)|*.jpg";    if (ofd.ShowDialog() != DialogResult.OK)        return;                 image.ImageFile = ofd.FileName;} | 
js中实现代码说明:
function ModifyImage() {    // 新建一个COM组件对象    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");    selEnt.message = "选择图像对象";    if(selEnt.go() != 1)        return;    var image = selEnt.Entity();    if(image == null)        return;    if (image.ObjectName != "McDbMxImageMark") {        alert("选择对象不是图像")        return;    }    // 控件程序在磁盘的文件路径    var sImageFile = mxOcx.GetOcxAppPath() + "\\mxdraw.png";    //替换目标文件    image.ImageFile = sImageFile;} | 
四、旋转图片
主要用到函数说明:
_DMxDrawX::ZoomAll
把当前图形中的所有实体都放到视区中。
_DMxDrawX::NewPoint
新创建IMxDrawPoint对象。
IMxDrawEntity::Rotate
旋转一个对象。详细说明如下:
| 参数 | 说明 | 
|---|---|
[in] IMxDrawPoint* basePoint  | 旋转基点  | 
[in] DOUBLE dRotationAngle  | 旋转角度  | 
c#中实现代码说明:
private void RotateImage(){    MxDrawImageMark image = (MxDrawImageMark)axMxDrawX1.GetEntity("image");    if (image == null)        return;    if (image.ObjectName != "McDbMxImageMark")        return;    //旋转基点    MxDrawPoint point = new MxDrawPoint();    point.x = 10;    point.y = 10;    //旋转一个对象,参数一为旋转基点,参数二为旋转角度    image.Rotate(point, 45 * 3.14159265 / 180.0);    axMxDrawX1.ZoomAll();} | 
js中实现代码说明:
function RotateImage() {    // 新建一个COM组件对象    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");    selEnt.message = "选择图像对象";    if(selEnt.go() != 1)        return;    var image = selEnt.Entity();    if(image == null)        return;    if (image.ObjectName != "McDbMxImageMark") {        alert("选择对象不是图像")        return;    }    //新创建IMxDrawPoint对象    var point = mxOcx.NewPoint();    point.x = 10;    point.y = 10;    //旋转一个对象,参数一为旋转基点,参数二为旋转角度    image.Rotate(point, 45 * 3.14159265 / 180.0);    mxOcx.ZoomAll();} | 
五、保存为各种格式
主要用到函数说明:
_DMxDrawX::SaveDwgFile
保存当前图。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR pFileName  | 保存的DWG文件绝对路径,如果扩展名为DXF文件,则保存为DXF文件. 扩展名为DWF文件,则保存为DWF文件, 扩展名为PDF文件,则保存为PDF文件,默认宽高210,297 扩展名为JPG文件,则保存为JPG文件,默认宽高1000,1000 扩展名为BMP文件,则保存为BMP文件,默认宽高1000,1000  | 
c#中实现代码说明:
private void SaveJpg(){    //参数一为名称;参数二为宽度;参数三为高度;参数四为颜色    axMxDrawX1.SaveJpgFile("D:\\tmp.jpg", 300, 300, 0);    MessageBox.Show("略缩图已经保存到D:\\tmp2.jpg");}private void savedxf(){    //参数一为名称;参数二为宽度;参数三为高度;参数四为颜色    axMxDrawX1.SaveDwgFile("D:\\tmp.dxf");    MessageBox.Show("dxf文件已经保存到D:\\tmp.dxf");}private void savepdf(){    //参数一为名称;参数二为宽度;参数三为高度;参数四为颜色    axMxDrawX1.SaveDwgFile("D:\\tmp.pdf");    MessageBox.Show("pdf文件已经保存到D:\\tmp.pdf");}private void savedwf(){    //参数一为名称;参数二为宽度;参数三为高度;参数四为颜色    axMxDrawX1.SaveDwgFile("D:\\tmp.dwf");    MessageBox.Show("dwf文件已经保存到D:\\tmp.dwf");} | 
js中实现代码说明:
function SaveJpg() {   //参数一为名称;参数二为宽度;参数三为高度;参数四为颜色   mxOcx.SaveJpgFile("c:\\tmp2.jpg",300,300,0);   alert("略缩图已经保存到C:\\tmp2.jpg");}function savedxf() {       mxOcx.SaveDwgFile("c:\\tmp.dxf");   alert("dxf文件已经保存到C:\\tmp.dxf");}function savepdf() {       mxOcx.SaveDwgFile("c:\\tmp.pdf");   alert("pdf文件已经保存到C:\\tmp.pdf");}function savedwf() {       mxOcx.SaveDwgFile("c:\\tmp.dwf");   alert("dwf文件已经保存到C:\\tmp.dwf");}//保存为加密文件function saveEncryptionDWG() {   //保存为加密文件,文件路径与文件名有用户设置   var ret = mxOcx.Call("MxET_SaveEncryptionDWG", "c:\\TmpEncryption.dwg");   if(ret.AtString(0) == "Ok")   {       alert("加密文件已经成功保存到C:\\TmpEncryption.dwg");   }   else   {       alert("保存失败");   }   ret = null;   CollectGarbage();}//打开加密文件function openEncryptionDWG() {   //打开加密文件,文件路径与文件名有用户设置   var ret =mxOcx.Call("MxET_OpenEncryptionDWG", "c:\\TmpEncryption.dwg");   if(ret.AtString(0) == "Ok")   {       alert("加密文件已经成功打开");   }   else   {       alert("打开失败");   }   ret = null;   CollectGarbage();} | 
六、设置水印
主要用到函数说明:
_DMxDrawX::Watermark
设置控件水印图片显示,字符串用逗号隔开,分为: “文件名,透明度,x方向距离,y方向距离,是否居中”, 是否居中0代表在上角定位,1表示自动居中.默认为居中,透明度为50。
_DMxDrawX::ViewColor
控件视区的背景颜色。
c#中实现代码说明:
//设置水印//首先定义iShowWatermark为falsebool iShowWatermark = false;private void ShowWatermark(){    //若是有水印,点击按钮水印不显示,反之,则反    iShowWatermark = !iShowWatermark;    if (iShowWatermark)    {        //设置控件水印图片显示,字符串用逗号隔开,分为: “文件名,透明度,x方向距离,        // y方向距离,是否居中”, 是否居中0代表在上角定位,1表示自动居中.默认为居中,透明度为50.        // GetOcxAppPath为控件程序在磁盘的文件路径        axMxDrawX1.Watermark = axMxDrawX1.GetOcxAppPath() + "\\Watermark.png" + ",20,5,5,1";        // 背景色改成白色(用户可以根据需要改变背景色)        axMxDrawX1.ViewColor = Color.FromArgb(0, 255, 255, 255);    }    else    {        axMxDrawX1.Watermark = "";        // 背景色改成白色(用户可以根据需要改变背景色)        axMxDrawX1.ViewColor = Color.FromArgb(0, 255, 255, 255);    }} | 
js中实现代码说明:
//设置水印//首先定义iShowWatermark为falsevar iShowWatermark = false;function ShowWatermark() {    //若是有水印,点击按钮水印不显示,反之,则反    iShowWatermark = !iShowWatermark;    if (iShowWatermark) {        //设置控件水印图片显示,字符串用逗号隔开,分为: “文件名,透明度,x方向距离,        // y方向距离,是否居中”, 是否居中0代表在上角定位,1表示自动居中.默认为居中,透明度为50.        // GetOcxAppPath为控件程序在磁盘的文件路径        mxOcx.Watermark = mxOcx.GetOcxAppPath() + "\\Watermark.png" + ",20,5,5,1";        // 背景色改成白色(用户可以根据需要改变背景色)        mxOcx.ViewColor = 16777215;    }    else {        mxOcx.Watermark = "";        // 背景色改成白色(用户可以根据需要改变背景色)        mxOcx.ViewColor = 0;    }} | 
七、制作动画
主要用到函数说明:
_DMxDrawX::DrawImageMark
绘图制一个图象标记对象。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR pszName  | 图层名  | 
DOUBLE dPosX  | 绘制位置,是图片的中心点X  | 
DOUBLE dPosY  | 绘制位置,是图片的中心点y  | 
DOUBLE dScale  | 缩放比例,如果输入负数时,表示图片随视区大小缩放,负数的决对值表示图片的高度,图片宽度自动计算  | 
DOUBLE dAng  | 图片旋转角度  | 
BSTR pszFileName  | 图片显示文件名  | 
BSTR pszTwinkeImageFiles  | 闪烁时使用的ImageFile.,设置该文件后,调用MxDraw::TwinkeEnt后将交替闪烁显示。 可以同时设置多个闪烁文件,文件间用逗号隔开,比如: 1.jgp,2.jpg,3.jpg  | 
VARIANT_BOOL isSaveData  | 图片数据,是否随图保存  | 
MxDraw::TwinkeEnt
闪烁实体。详细说明如下:
| 参数 | 说明 | 
|---|---|
McDbObjectId id  | 被闪烁的实体对象id  | 
long lCount = -1  | 闪烁次数,默认为-1表示不限闪烁次数  | 
c#中实现代码说明:
private void DrawGif(){    MxDrawPoint point = (MxDrawPoint)axMxDrawX1.GetPoint(false, 0, 0, "点取图片的插入中点...");    if (point == null)    {        return;    }    //控件程序在磁盘的文件路径    var sImageFile1 = axMxDrawX1.GetOcxAppPath() + "\\1.png";    var sImageFile2 = axMxDrawX1.GetOcxAppPath() + "\\2.png";    var sImageFile3 = axMxDrawX1.GetOcxAppPath() + "\\3.png";    // 绘图制一个图象标记对象    //参数一为绘制位置,是图片的中心点X ;参数二为绘制位置,是图片的中心点Y;参数三为缩放比例;参数四为旋转角度;    //参数五为图片显示文件名;参数六为闪烁文件设置;参数七为图片数据是否随图保存    var lId = axMxDrawX1.DrawImageMark(point.x, point.y, -20, 0, sImageFile1,        sImageFile1 + "," + sImageFile2 + "," + sImageFile3, true);    //闪烁实体    //参数一为被闪烁的实体对象id;参数二为闪烁次数,默认为-1表示不限闪烁次数,成功返回true    axMxDrawX1.TwinkeEnt(lId);} | 
js中实现代码说明:
function  DrawGif(){    //新建一个COM组件对象 参数为COM组件类名    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取图片的插入中点";    if (getPt.go() != 1) {        return;    }    var frstPt = getPt.value();    if (frstPt == null) {        return;    }    //控件程序在磁盘的文件路径    var sImageFile1 = mxOcx.GetOcxAppPath() + "\\1.png";    var sImageFile2 = mxOcx.GetOcxAppPath() + "\\2.png";    var sImageFile3 = mxOcx.GetOcxAppPath() + "\\3.png";    // 绘图制一个图象标记对象    //参数一为绘制位置,是图片的中心点X ;参数二为绘制位置,是图片的中心点Y;参数三为缩放比例;参数四为旋转角度;    //参数五为图片显示文件名;参数六为闪烁文件设置;参数七为图片数据是否随图保存    var lId = mxOcx.DrawImageMark(frstPt.x, frstPt.y, -20, 0, sImageFile1,        sImageFile1 + "," + sImageFile2 + "," + sImageFile3, true);    //闪烁实体    //参数一为被闪烁的实体对象id;参数二为闪烁次数,默认为-1表示不限闪烁次数,成功返回true    mxOcx.TwinkeEnt(lId);} | 
八、绘制光栅图形
在设计绘图时,绘制光栅图形,可以设置其的缩放比例、旋转角度等属性。
主要用到函数说明:
_DMxDrawX::DrawImage
绘制光栅图形。详细说明如下:
| 参数 | 说明 | 
|---|---|
DOUBLE dPosX  | 插入点的X坐标  | 
DOUBLE dPosY  | 插入点的Y坐标  | 
DOUBLE dScale  | 光栅图形的缩放比例  | 
DOUBLE dAng  | 旋转角度  | 
BSTR pszFilePath  | 光栅图的文字路径,支持http://开头的网络路径  | 
c#中实现代码说明:
private void DrawImage(){    MxDrawPoint point = (MxDrawPoint)axMxDrawX1.GetPoint(false, 0, 0, "点取图片的插入中点...");    if (point == null)    {        return;    }    // 控件程序在磁盘的文件路径    var sImageFile = axMxDrawX1.GetOcxAppPath() + "\\mxcad.jpg";    // 绘图制一个图象标记对象    //参数一插入点的X坐标;参数二插入点的Y坐标;参数三为光栅图形的缩放比例;参数四为旋转角度;    //参数五为光栅图的文字路径,支持http://开头的网络路径;    axMxDrawX1.DrawImage(point.x, point.y, 0.0, 0.0, sImageFile);    axMxDrawX1.ZoomAll();} | 
js中实现代码说明:
function DrawImage() {    // 新建一个COM组件对象    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取图片的插入中点";    if (getPt.go() != 1) {        return;    }    var frstPt = getPt.value();    if (frstPt == null) {        return;    }    // 控件程序在磁盘的文件路径    var sImageFile = mxOcx.GetOcxAppPath() + "\\mxcad.jpg";    // 绘图制一个图象标记对象    //参数一插入点的X坐标;参数二插入点的Y坐标;参数三为光栅图形的缩放比例;参数四为旋转角度;    //参数五为光栅图的文字路径,支持http://开头的网络路径;    mxOcx.DrawImage(frstPt.x, frstPt.y, 0.0, 0.0, sImageFile);    mxOcx.ZoomAll();} | 
九、指定区域绘制一个jpg文件
主要用到函数说明:
_DMxDrawX::DrawToJpg
把指定区域的内容绘制一个jpg文件中。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR sJpgFilePath  | Jpg文件名  | 
DOUBLE dLbx  | 输出范围的左下角坐标X,文档坐标系统  | 
DOUBLE dLby  | 输出范围的左下角坐标Y,文档坐标系统  | 
DOUBLE dRtx  | 输出范围的右上角坐标X,文档坐标系统  | 
DOUBLE dRty  | 输出范围的右上角坐标Y,文档坐标系统  | 
iWidth  | 位图宽度方向的像素,是-1并iHeight不是-1,由高度和文档高宽算出,否则取系统默认值:1000  | 
iHeight  | 位图高度方向的像素,是-1并iWidth不是-1, 由高度和文档高宽算出,否则取系统默认值:1000  | 
pBkColor  | 位图的背影色,如果为NULL,取黑色为背景色  | 
c#中实现代码说明:
private void UserSaveJpg(){    MxDrawUtility mxUtility = new MxDrawUtility();    //点取范围的第一点    MxDrawPoint point = (MxDrawPoint)(mxUtility.GetPoint(null, "点取范围的第一点"));                if (point == null)    {        return;    }    //与用户交互得一个矩形框  参数一矩形框一个对角点;参数二命令行提示    MxDrawPoint point1 = (MxDrawPoint)(mxUtility.GetPoint(null, "点取范围的第一点"));    if (point1 == null)    {        return;    }    axMxDrawX1.DrawToJpg("D:\\mxcad.jpg", point.x, point.y, point1.x, point1.y, 200, 200, 0);    MessageBox.Show("图片已经保存");} | 
js中实现代码说明:
function UserSaveJpg() {    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取范围第一点";    if (getPt.go() != 1) {        return;    }    var frstPt = getPt.value();    if (frstPt == null)        return;    //新创建IMxDrawUtility对象    var utl = mxOcx.NewUtility();    //与用户交互得一个矩形框  参数一矩形框一个对角点;参数二命令行提示    var secondPt = utl.GetCorner(frstPt, "点取范围第二点");    if (secondPt == null)        return;    mxOcx.DrawToJpg("c:\\mxcad.jpg", frstPt.x , frstPt.y,  secondPt.x, secondPt.y, 200, 200, 0);    alert("图片已经保存");} | 
十、制作简单动画
主要用到函数说明:
IMxDrawEntity::Rotate
旋转一个对象。详细说明如下:
| 参数 | 说明 | 
|---|---|
[in] IMxDrawPoint* basePoint  | 旋转基点  | 
[in] DOUBLE dRotationAngle  | 旋转角度  | 
IMxDrawAnimation::GetAnimationEntity2
得到动画临时对象.如果对象没有被初始成动画状态,返回为 NULL。详细说明如下:
| 参数 | 说明 | 
|---|---|
[in] BSTR pszHandle  | 动画对象句柄  | 
js中实现代码说明:
     function InitDraw() {        draw = document.getElementById("MxDrawXCtrl");  draw.ImplementCommandEventFun = function DoCommandEventFunc(iCmd) {        if (iCmd == 1) {             // 启动时打开文件             draw.OpenDwgFile(draw.GetOcxAppPath() + "\\Blk\\animation.dwg");             var animation = draw.NewComObject("IMxDrawAnimation");                 //把对象初始化成动画状态                 animation.InitAnimationEntity2("211");      animation.InitAnimationEntity2("212");      animation.InitAnimationEntity2("213");                 // 启动一个控件时钟事件,用于实现动画。      draw.CallLongParam1("Mx_StartUserTimer", 30);             }         };         draw.ImplementCustomEvent = function CustomEvent(sEventName) {if (sEventName == "Mx_UserTimer")    {       var animation = draw.NewComObject("IMxDrawAnimation");       //开始一个动画绘制过程                 animation.StartDraw();                 // 211 212  213是需要旋转实体的句柄.                 RotateEnt("211", animation);                 RotateEnt("212", animation);                 RotateEnt("213", animation);                 //结束动画绘制过程                 animation.EndDraw();                 // 注意需要显示释放递代器.,不然会引起错误       animation = null;        CollectGarbage();   }         };        } | 
function  RotateEnt( handls,  animation)      {          //得到动画临时对象.如果对象没有被初始成动画状态,返回为 NULL          var ent = animation.GetAnimationEntity2(handls);          if (ent != null && (ent.ObjectName == "McDbBlockReference"))          {              var blkRef = ent;              //旋转一个对象,参数一为旋转基点,参数二为旋转角度              blkRef.Rotate(blkRef.Position, -30 * 3.14159265 / 180.0);              //绘制动画对象.该函数只能在StartDraw,EndDraw之前调用              animation.Draw2(handls);          }      } | 
效果展示:

十一、删除所有图片
c#代码实现说明:
  MxDrawSelectionSet ss = new MxDrawSelectionSet();       // 创建过滤对象.MxDrawResbuf spFilte = new MxDrawResbuf();     // 把文字对象,当着过滤条件.spFilte.AddStringEx("IMAGE", 5020);     // 得到图上,所有图片对象.ss.Select2(MCAD_McSelect.mcSelectionSetAll, null, null, null, spFilte);     bool bFind = false;     for (int i = 0; i < ss.Count; i++){    MxDrawEntity ent = ss.Item(i);             if (ent == null)                 continue;    ent.Erase();} | 
js代码实现说明:
var ss = mxOcx.NewSelectionSet();// 创建过滤对象.var spFilte = mxOcx.NewResbuf();// 把图片对象,当着过滤条件.spFilte.AddStringEx("IMAGE", 5020);// 得到图上,所有图片对象.ss.Select2(5, null, null, null, spFilte);for (var i = 0; i < ss.Count; i++){    var ent = ss.Item(i);    if (ent == null)        continue;    ent.Erase();} | 
十二、设置图片透明度
c#代码实现说明:
   Int64 lId = axMxDrawX1.DrawImageMark(0, 0, -100, 15 * 3.14159265 / 180.0, "G:\1.jpg", "", true);      MxDrawImageMark imageMark = (MxDrawImageMark)axMxDrawX1.ObjectIdToObject(lId);             // 设置图片的透明度 MxDrawResbuf param = new MxDrawResbuf(); param.AddLong(50); imageMark.SetProp("setTransparent", param); axMxDrawX1.ZoomAll(); axMxDrawX1.UpdateDisplay(); | 
js代码实现说明:
function Transparent() {    var sImageFile1 = mxOcx.GetOcxAppPath() + "\\mxcad.jpg";    var lId = mxOcx.DrawImageMark(0, 0, 1, 0, sImageFile1, "", true);    // 设置图片的透明度    var imageMark=mxOcx.ObjectIdToObject(lId);    var param = mxOcx.NewResbuf();    param.AddLong(50);    imageMark.SetProp("setTransparent",param);    mxOcx.ZoomAll();    mxOcx.UpdateDisplay();} | 
十三、向记录中增加一个光栅图形
主要用到函数说明:
IMxDrawBlockTableRecord::AddImage2
向记录中增加一个光栅图形,详细说明如下:
| 参数 | 说明 | 
|---|---|
[in] DOUBLE dScale  | 光栅图的缩放比例  | 
[in] LONGLONG imageDefId  | 光栅图形定义对象ID  | 
origin  | 光栅图的左下角位置  | 
c#代码实现说明:
             // 插入一个图片。                         String sFileName = "H:\11.png";                         //  得到图片定义字体典.            MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase();                        // ACAD_IMAGE_DICT 是autocad约定的,图片定义字典名称,必须是ACAD_IMAGE_DICT            // McDbDictionary 是字典的类名            // AddObject函数,会向字典中,加入一个记录,如果已经有该记录,它什么不都做,直接返回该记录.            MxDrawDictionary imageDict = (MxDrawDictionary)database.GetNamedObjectsDictionary().AddObject("ACAD_IMAGE_DICT", "McDbDictionary");                        if (imageDict == null)                            return;                        // 向图片字典中,增加个图像定义对象., sFileName是对象的Key, McDbRasterImageDef是图片定义对象类名.            MxDrawRasterImageDef imageDef = (MxDrawRasterImageDef)imageDict.AddObject(sFileName, "McDbRasterImageDef");                        if (imageDef == null)                            return;            imageDef.SourceFileName = sFileName;                        // 下面是,向当前控件,增加绘制图片。                        MxDrawBlockTableRecord curspace = (MxDrawBlockTableRecord)database.CurrentSpace();            curspace.AddImage2(0, 0, 1.0, imageDef.ObjectID); |