在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为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);
    }
}

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

七、制作动画

主要用到函数说明:

_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, nullnullnull, 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);

梦想CAD控件COM接口光栅图处理的更多相关文章

  1. 梦想CAD控件COM接口自定义命令

    在CAD软件操作中,为方便使用者,使用自定义命令发出命令,完成CAD绘图,修改,保存等操作.点击此处下载演示实例. _DMxDrawX::RegistUserCustomCommand 向CAD控件注 ...

  2. 梦想CAD控件COM接口标注样式

    增加标注样式 用户可以增加标注样式到数据库,具体实现c#代码如下: private void CreateDim() { //返回控件的数据库对象 MxDrawDatabase database = ...

  3. 梦想CAD控件com接口扩展数据

    随着CAD应用软件的飞速发展,经常需要保存一些与图形可视性无关的数据,即非图形参数.例如在绘制化验样图中包含品位数据.MxCAD定义了一类参数——实体扩展数据.扩展数据与实体的可视性无关,而是用户根据 ...

  4. CAD控件:梦想CAD控件功能更新 清除图上的所有高亮实体

    1,修正得组里面的实体,把删除实体也返回的错误   2,修正代理实体改不了颜色问题.   3,修正捕捉块插入点,有时会跑到很远的位置问题.   4.MxDrawChange类增加ToBlockRefe ...

  5. 梦想CAD控件COM接口搜索图面上的文字

    点击此处下载演示实例 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DMxDrawX::NewResbuf ...

  6. 梦想CAD控件COM接口文字样式

    增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现c#代码如下: private void CreateText() { MxDrawApplication app = new ...

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

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

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

    梦想CAD控件图层COM接口知识点 一.新建图层 主要用到函数说明: _DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 c#中实现代码 ...

  9. 如何在网页中浏览和编辑DWG文件 梦想CAD控件

    如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...

随机推荐

  1. png图片解码

    PNG.可移植网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的"PNG's Not GIF",是一种位图文件(bitmap ...

  2. UGUI 实现Button长按效果(RepeatButton)

    Tag:加入了一个延迟,在button按下状态一段时间后再開始 repeate using UnityEngine; using UnityEngine.Events; using UnityEngi ...

  3. openwrt-安装-驱动-应用-lcd2004a实验

    1. 板子f403tech的RT5350的板子和 (1)openWRT系统的定义和特点         OpenWrt是一个高度模块化.高度自己主动化的嵌入式Linux系统.拥有强大的网络组件.经常被 ...

  4. PHP博客项目-gai

    XX科技还是米有电话过来,看样子真的是黄了.这段时间都没有好好学习,经历了两次稀里糊涂的面试,特别是第二次,让我感觉自己之前学的东西都已经忘了,本来就学的不多,也不扎实,还一忘...看了是真的要开始着 ...

  5. vue iview Select bug,在低版本浏览器中报错

    iview是个好东西,今天第一次试用,用来做了一个app,但是在安卓5.1各种报错啊,头痛的是不知道具体哪行代码错了,总是报错undefined is not a function. 倒腾了半天,原来 ...

  6. 【Poj 1330】Nearest Common Ancestors

    http://poj.org/problem?id=1330 题目意思就是T组树求两点LCA. 这个可以离线DFS(Tarjan)-----具体参考 O(Tn) 0ms 还有其他在线O(Tnlogn) ...

  7. 求欧拉回路 UOJ117

    传送门什么是欧拉回路呢……?欧拉回路的定义就是从vi出发到vi,经过每条边有且只有一次的路径. 就很像一笔画. 欧拉回路的性质较多……定理也很多……直接证明很长……我们还是直接说怎么判定,怎么求欧拉回 ...

  8. [Swift通天遁地]一、超级工具-(20)图片面部聚焦:使图像视图自动聚焦图片人物的面部位置

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. (进制)51NOD 1057 N的阶乘

    输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120解:这其实是MOD进制,将一个 ...

  10. jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置(详解)

    简介 上一篇对jenkins有了大致了解之后,那么我们就开始来安装一下jenkins. Jenkins安装 一.安装Java环境 1.你需要做的第一件事情就是在你的机器上安装Java环境.Jenkin ...