在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪、透明度调整等一些操作,在网页可以快速实现我们所需功能。

一、设置背景图片

1、把图片作为背景图片可见但是不能编辑操作。

2、主要用到函数说明:_DMxDrawX::DrawImageToBackground

绘光栅图到背景。详细说明如下:

参数 说明

BSTR sFileName

光栅图文件.DWGBMPJPG文件路径

LONG lLeftUpX

栅图显示的在控件视区显示的左上角位置X,视区窗口坐标

LONG lLeftUpY

栅图显示的在控件视区显示的左上角位置Y,视区窗口坐标

3、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);

}

4、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 );

}

二、插入图片

1、在设计绘图时,需要插入外部图片,可以设置图片的缩放比例、旋转角度、图片显示文件名等属性。

2、主要用到函数说明:_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

图片数据,是否随图保存

3、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();

}

4、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);

}

三、替换图片

1、主要用到函数说明:IMxDrawImageMark::ImageFile

图片文件路径。

2、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;

}

3、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;

}

四、旋转图片

1、主要用到函数说明:

(1)_DMxDrawX::ZoomAll

把当前图形中的所有实体都放到视区中。

(2)_DMxDrawX::NewPoint

新创建IMxDrawPoint对象。

(3)IMxDrawEntity::Rotate

旋转一个对象。详细说明如下:

参数 说明

[in] IMxDrawPoint* basePoint

旋转基点

[in] DOUBLE dRotationAngle

旋转角度

2、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();

}

3、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();

}

五、保存为各种格式

1、主要用到函数说明:_DMxDrawX::SaveDwgFile

保存当前图。详细说明如下:

参数 说明

BSTR pFileName

保存的DWG文件绝对路径,如果扩展名为DXF文件,则保存为DXF文件. 扩展名为DWF文件,则保存为DWF文件, 扩展名为PDF文件,则保存为PDF文件,默认宽高210,297 扩展名为JPG文件,则保存为JPG文件,默认宽高1000,1000 扩展名为BMP文件,则保存为BMP文件,默认宽高1000,1000

2、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");

}

3、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();

}

六、设置水印

1、主要用到函数说明:

(1)_DMxDrawX::Watermark

设置控件水印图片显示,字符串用逗号隔开,分为: “文件名,透明度,x方向距离,y方向距离,是否居中”, 是否居中0代表在上角定位,1表示自动居中.默认为居中,透明度为50。

(2)_DMxDrawX::ViewColor

控件视区的背景颜色。

2、c#中实现代码说明:

//设置水印

//首先定义iShowWatermark为false

bool 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);

    }

}

3、js中实现代码说明:

//设置水印

//首先定义iShowWatermark为false

var 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;

    }

}

七、制作动画

1、主要用到函数说明:

(1)_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

图片数据,是否随图保存

(2)MxDraw::TwinkeEnt

闪烁实体。详细说明如下:

参数 说明

McDbObjectId id

被闪烁的实体对象id

long lCount = -1

闪烁次数,默认为-1表示不限闪烁次数

2、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);

}

3、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);

}

八、绘制光栅图形

1、在设计绘图时,绘制光栅图形,可以设置其的缩放比例、旋转角度等属性。

2、主要用到函数说明:_DMxDrawX::DrawImage

绘制光栅图形。详细说明如下:

参数 说明

DOUBLE dPosX

插入点的X坐标

DOUBLE dPosY

插入点的Y坐标

DOUBLE dScale

光栅图形的缩放比例

DOUBLE dAng

旋转角度

BSTR pszFilePath

光栅图的文字路径,支持http://开头的网络路径

3、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();

}

4、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文件

1、主要用到函数说明:_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,取黑色为背景色

2、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("图片已经保存");

}

3、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("图片已经保存");

}

十、制作简单动画

1、主要用到函数说明:

(1)IMxDrawEntity::Rotate

旋转一个对象。详细说明如下:

参数 说明

[in] IMxDrawPoint* basePoint

旋转基点

[in] DOUBLE dRotationAngle

旋转角度

(2)IMxDrawAnimation::GetAnimationEntity2

得到动画临时对象.如果对象没有被初始成动画状态,返回为 NULL。详细说明如下:

参数 说明

[in] BSTR pszHandle

动画对象句柄

2、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);

          }

      }

3、效果展示:

十一、删除所有图片

1、c#代码实现说明:

  MxDrawSelectionSet ss = new MxDrawSelectionSet();    

  // 创建过滤对象.

MxDrawResbuf spFilte = new MxDrawResbuf();    

// 把文字对象,当着过滤条件.

spFilte.AddStringEx("IMAGE", 5020);    

// 得到图上,所有图片对象.

ss.Select2(MCAD_McSelect.mcSelectionSetAll, nullnullnull, spFilte);    

bool bFind = false;     for (int i = 0; i < ss.Count; i++)

{

    MxDrawEntity ent = ss.Item(i);        

    if (ent == null)            

    continue;

    ent.Erase();

}

2、js代码实现说明:

var ss = mxOcx.NewSelectionSet();

// 创建过滤对象.

var spFilte = mxOcx.NewResbuf();

// 把图片对象,当着过滤条件.

spFilte.AddStringEx("IMAGE", 5020);

// 得到图上,所有图片对象.

ss.Select2(5, nullnullnull, spFilte);

for (var i = 0; i < ss.Count; i++)

{

    var ent = ss.Item(i);

    if (ent == null)

        continue;

    ent.Erase();

}

十二、设置图片透明度

1、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();

2、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();

}

十三、向记录中增加一个光栅图形

1、主要用到函数说明:IMxDrawBlockTableRecord::AddImage2

向记录中增加一个光栅图形,详细说明如下:

参数 说明

[in] DOUBLE dScale

光栅图的缩放比例

[in] LONGLONG imageDefId

光栅图形定义对象ID

origin

光栅图的左下角位置

2、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);

梦想CAD控件

梦想CAD控件COM接口光栅图处理相关推荐

  1. 梦想CAD控件图块COM接口知识点

    梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...

  2. 梦想CAD控件(网页CAD插件) 2022.12.12更新

    梦想CAD控件(网页CAD插件) 2022.12.12更新 试用下载:https://www.mxdraw.com/ndetail_30238.html 1. 修改CAD点对象,不能看到闪烁效果问题 ...

  3. 梦想CAD控件 2021.12.06更新

    梦想CAD控件 2021.12.06更新 下载地址:https://www.mxdraw.com/ndetail_30180.html 修改得到cad.dwg预览图片,如果图片是png格式,读取失败的 ...

  4. 梦想CAD控件文字COM接口知识点

    一.参数绘制文字 1.在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 2.主要用到函数说明: (1)_DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 ...

  5. 如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com

    (百度百科连接) 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 2010开发,最早从2007年第一个版本完成,经过多年的累积已经非常 ...

  6. 梦想CAD控件安卓参数绘图

    一.简介 在CAD绘图中,参数化绘图可以帮助我们极大缩短设计时间,用户可以按照设计意图控制绘图对象,这样即使对象发生了变化,具体的关系和测量数据仍将保持不变,能够对几何图形和标注进行控制,可以帮助用户 ...

  7. 梦想CAD控件网页版右键弹出菜单

    用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下 : 一.新建菜单文件 1.新一个文本文件: mxpoptest.mnu,内容如下(此文件为 ...

  8. 梦想CAD控件com接口界面控制右键弹出菜单

    用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下(C#语言参考例子:"samples\CSharpRightKeyMenu\CSh ...

  9. 梦想CAD控件图层COM接口知识点

    一.新建图层 1.主要用到函数说明:_DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 2.c#中实现代码说明: private voi ...

最新文章

  1. CVPR 2021|一个绝妙的想法:在类别不平衡的数据上施展半监督学习
  2. 在直播问题上,智能电视们不应该沉默
  3. jQuery Alert Dialogs (Alert, Confirm, Prompt Replacements)(翻译)
  4. matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
  5. 买了社保,再买农村医保是不是多余?
  6. 提高xshell使用效率
  7. Win10电脑如何查看电脑配置
  8. css之box-sizing用法
  9. 【毕业季】致大学江湖的青葱岁月,我与湖中大的四个夏天(情忆新月,梦系信科)
  10. 百钱百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,100元要买100只鸡,共有几种情况
  11. 基于Open3D的Lidar-Segment
  12. 配置基于IPv6的单节点Ceph
  13. 计算机excel隆华书店销量,计算机二级excel主要函式的用法
  14. 1.前端笔记之html
  15. 前端如何做好数据容错
  16. 一个阅读分享的微信小程序(也可用于新闻阅读,新闻分享)(原创)
  17. 谈谈wxHOOK为什么会限制
  18. zynq操作系统: jffs2文件系统的错误异常
  19. Windows端口占用
  20. 梦幻服务器是每周二维护吗,梦幻西游:这次的维护公告有意思,同一个活动居然有两个活动日期...

热门文章

  1. AD16绘制印制板元器件封装
  2. Mybatis映射 resultMap里property爆红
  3. MiKTeX 中文支持的解决方案
  4. DirectX9 3D 快速上手 8
  5. 代理重加密和大火的NuCypher
  6. Vue之v-if和v-show,外加v-if VS v-show
  7. 基于SQLserver实现的医药销售管理系统
  8. 堆栈,堆栈,堆和栈的区别
  9. 华为陶景文:数字化转型如何实现流程重构?
  10. python opencv特征点检测和匹配教程