在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, 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();
}
|
2、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();
}
|
十二、设置图片透明度
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接口光栅图处理相关推荐
- 梦想CAD控件图块COM接口知识点
梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...
- 梦想CAD控件(网页CAD插件) 2022.12.12更新
梦想CAD控件(网页CAD插件) 2022.12.12更新 试用下载:https://www.mxdraw.com/ndetail_30238.html 1. 修改CAD点对象,不能看到闪烁效果问题 ...
- 梦想CAD控件 2021.12.06更新
梦想CAD控件 2021.12.06更新 下载地址:https://www.mxdraw.com/ndetail_30180.html 修改得到cad.dwg预览图片,如果图片是png格式,读取失败的 ...
- 梦想CAD控件文字COM接口知识点
一.参数绘制文字 1.在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 2.主要用到函数说明: (1)_DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 ...
- 如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com
(百度百科连接) 梦想绘图控件5.2 是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 2010开发,最早从2007年第一个版本完成,经过多年的累积已经非常 ...
- 梦想CAD控件安卓参数绘图
一.简介 在CAD绘图中,参数化绘图可以帮助我们极大缩短设计时间,用户可以按照设计意图控制绘图对象,这样即使对象发生了变化,具体的关系和测量数据仍将保持不变,能够对几何图形和标注进行控制,可以帮助用户 ...
- 梦想CAD控件网页版右键弹出菜单
用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下 : 一.新建菜单文件 1.新一个文本文件: mxpoptest.mnu,内容如下(此文件为 ...
- 梦想CAD控件com接口界面控制右键弹出菜单
用户需要右键弹出菜单,则需要响应鼠标事件,右键按下后,弹出菜单分为在命令下运行及在非命令下运行,具体介绍如下(C#语言参考例子:"samples\CSharpRightKeyMenu\CSh ...
- 梦想CAD控件图层COM接口知识点
一.新建图层 1.主要用到函数说明:_DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 2.c#中实现代码说明: private voi ...
最新文章
- CVPR 2021|一个绝妙的想法:在类别不平衡的数据上施展半监督学习
- 在直播问题上,智能电视们不应该沉默
- jQuery Alert Dialogs (Alert, Confirm, Prompt Replacements)(翻译)
- matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
- 买了社保,再买农村医保是不是多余?
- 提高xshell使用效率
- Win10电脑如何查看电脑配置
- css之box-sizing用法
- 【毕业季】致大学江湖的青葱岁月,我与湖中大的四个夏天(情忆新月,梦系信科)
- 百钱百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,100元要买100只鸡,共有几种情况
- 基于Open3D的Lidar-Segment
- 配置基于IPv6的单节点Ceph
- 计算机excel隆华书店销量,计算机二级excel主要函式的用法
- 1.前端笔记之html
- 前端如何做好数据容错
- 一个阅读分享的微信小程序(也可用于新闻阅读,新闻分享)(原创)
- 谈谈wxHOOK为什么会限制
- zynq操作系统: jffs2文件系统的错误异常
- Windows端口占用
- 梦幻服务器是每周二维护吗,梦幻西游:这次的维护公告有意思,同一个活动居然有两个活动日期...
热门文章
- AD16绘制印制板元器件封装
- Mybatis映射 resultMap里property爆红
- MiKTeX 中文支持的解决方案
- DirectX9 3D 快速上手 8
- 代理重加密和大火的NuCypher
- Vue之v-if和v-show,外加v-if VS v-show
- 基于SQLserver实现的医药销售管理系统
- 堆栈,堆栈,堆和栈的区别
- 华为陶景文:数字化转型如何实现流程重构?
- python opencv特征点检测和匹配教程