VectorDraw常见问题合集,让你从菜鸡到大神(五)

151 阅读1分钟

VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。

VectorDraw web library (javascript)不仅能打开CAD图纸,而且能显示任何支持HTML5标准平台上的通用矢量对象,如Windows,安卓,iOS和Linux。无需任何安装,VectorDraw web library (javascript)就可以运行在任何支持canvas标签和Javascript的主流浏览器(Chrome, Firefox, Safari, Opera, Dolphin, Boat等等)中。这意味着可以用DXF,DWG,DGN,SKP(Google的Sketchup),VDML等多种格式在任何台式、平板电脑,智能手机和便携式笔记本上展现出你的业务。

问:

是否能够在转动圆圈的情况下,在View3D VROT中更改视图旋转的方式?

答:

可以通过覆盖VectorDrawBaseControl的vdKeyDown事件来完成。

例:

(假设我们在表单控件集合中添加了一个带有vdFramedControl的表单)

在以下示例中:

  • 当用户按住Alt键,按左箭头键或右箭头键时,视图将在活动视图的Y轴上旋转。

  • 当用户按住Alt键,按下向上或向下箭头键时,视图将在活动视图的X轴上旋转。

  • 当用户按住控制键的同时按下左箭头键或右箭头键时,视图将在活动视图的Z轴上旋转。

private void Form1_Load(object sender, EventArgs e){vdFramedControl.BaseControl.vdKeyDown += new VectorDraw.Professional.Control.KeyDownEventHandler(BaseControl_vdKeyDown);}void BaseControl_vdKeyDown(KeyEventArgs e, ref bool cancel)        {            BaseAction action = doc.ActiveLayOut.OverAllActiveAction;            if(action == null) return;            Matrix curmat = new Matrix( action.Render.CurrentMatrix);            bool done = false;            if (e.Alt && e.KeyCode == Keys.Left)            {                curmat.RotateYMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d);                done = true;                            }            else if (e.Alt && e.KeyCode == Keys.Right)            {                curmat.RotateYMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d);                done = true;                            }            else if (e.Alt && e.KeyCode == Keys.Up)            {                curmat.RotateXMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d);                done = true;                            }            else if (e.Alt && e.KeyCode == Keys.Down)            {                curmat.RotateXMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d);                done = true;                            }            else if (e.Control && e.KeyCode == Keys.Left)            {                curmat.RotateZMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d);                done = true;                            }            else if (e.Control && e.KeyCode == Keys.Right)            {                curmat.RotateZMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d);                done = true;                            }            if (!done) return;            action.Render.CurrentMatrix = curmat;            doc.Redraw(true);            cancel = true;        }