当前位置:首页 > 帮助文档 > COM开发 > 光栅图处理
简介设置背景图片插入图片替换图片旋转图片保存为各种格式保存为加密文件打开加密文件设置水印制作动画绘制光栅图形指定区域绘制一个jpg文件
简介

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


效果展示:


c#bgi.png

插入图片

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


主要用到函数说明:


_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代码中设置的图片插入到控件视区得任何位置。如下图所示:


c#insertimg.png

替换图片

主要用到函数说明:


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


效果展示:


替换前:


c#mbimg1.png


替换后:


c#mbimg2.png

旋转图片

主要用到函数说明:


_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();
}


效果展示:


c#rotateimg.png

保存为各种格式

主要用到函数说明:


_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");
}
保存为加密文件

11111

打开加密文件

11

设置水印

主要用到函数说明:


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


效果展示:


用户可以通过点击设置水印按钮设置水印到控件视区中(用户可以选取所需水印图片,此教程示例选取本公司水印)。如下图所示:


c#watermark.png

制作动画

主要用到函数说明:


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


效果展示:


c#makegif.png

绘制光栅图形

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


主要用到函数说明:


_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();
}


效果展示:


c#img.png

指定区域绘制一个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("图片已经保存");
}
梦想CAD是专业的CAD插件(控件),可轻松在网页、手机及BS/CS程序中浏览编辑DWG文件,不需安装AutoCAD即可运行。经十余年累积已非常稳定可靠,有关键的空间搜索算法,并使用汇编优化,可同时处理50万级实体,有非常高的图形显示和处理效率。
联系我们
TEL:400-888-5703
185-8173-1060
客服I QQ: 3570505660
技术I QQ: 827867134
技术II QQ:6884123
VIP服务购买
销售TEL:156-8136-8971
销售QQ:710714273
用户交流
控件QQ交流群1:73281982
控件QQ交流群2:112199959
MxCAD软件群 1:515771658
技术I:QQ
827867134
客服I:QQ
3570505660
销售QQ
710714273
联系电话400-888-5703