VectorDraw Developer Framework常见问题整理(七十):如何将图像映射到绘图单位

翻译|使用教程|编辑:鲍佳佳|2021-06-10 11:42:45.460|阅读 23 次

概述:VectorDraw Framework使用vdPolyFace或vdGroundSurface对象的MappedImages属性导出了将图像映射到这些对象的能力。这方面的例子可以在我们的AddEntities示例中找到。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。

下载VectorDraw Developer Framework(VDF)最新版


VectorDraw Framework使用vdPolyFace或vdGroundSurface对象的MappedImages属性导出了将图像映射到这些对象的能力。这方面的例子可以在我们的AddEntities示例中找到。
如果你想在你的绘图上映射一个单一的图像,你可以使用下面的示例代码。

假设我们有一个名称为 "myimage.jpg "的图像
同时我们有2个像素坐标系中的点,相对于图像的左上角

例子
    P1_pixel_x , P1_pixel_y

    P2_pixel_x , P2_pixel_y

现在,我们有了一个要映射图像的图纸


vdDocument doc;//already defined VectorDraw Document object。
//为选中的像素点
构造gPoints gPoint imgp1 = new gPoint(P1_pixel_x , P1_pixel_y,0);
gPoint imgp2 = new gPoint(P2_pixel_x, P2_pixel_y,0);

//将imagedefinition添加到绘图中
vdImageDef imagedef = doc.Images.Add("myimage.jpg" );

double Aspect =(double) imagedef .Height / (double)imagedef .Width;//width,所选图像的高度(以像素为单位)

//创建一个矩阵,将图像的像素坐标转换为 Unint 宽度矩阵
矩阵 pixeltoworld = new Matrix();
pixeltoworld.ScaleMatrix(1.0 / magedef .Width, -Aspect /imagedef .Height, 1.0d);
pixeltoworld.TranslateMatrix(0.0, Aspect, 0.0);
//将像素坐标转换为单位世界坐标
imgp1 = pixeltoworld.Transform(imgp1);
imgp2 = pixeltoworld.Transform(imgp2);

vector offsrc = new Vector(imgp2 - imgp1);//源向量

Vector offdst =new Vector(P2_world -P1_world );//目标向量

double scale = offdst.Length / offsrc.Length;

//计算映射图像的最终变换矩阵
Matrix m2 = new Matrix();
m2.TranslateMatrix(imgp1 * -1);
m2.ScaleMatrix(scale, scale, 1.0);
m2.RotateZMatrix(offdst.Angle2DDirection() - offsrc.Angle2DDirection());
m2.TranslateMatrix(P1_world);

//创建一个新的图像引用所选的“myimage.jpg”
vdImage img2 = new vdImage(doc);
img2.ImageDefinition = imagedef ;
img2.PenColor = new vdColor(Color.White, 100);//使图像透明

img2.Transformby(m2);//将图像变换到绘图中的正确位置

doc.Model.Entities.AddItem(img2); //将图像添加到模型绘图实体

doc.Redraw(true);//强制重绘绘图

=======================================================

如果您对想要购买正版授权VectorDraw Developer Framework(VDF),可以联系在线客服>>咨询相关问题。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:vectordraw

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat