VectorDraw Developer Framework常见问题整理(五十五):如何在动作处于活动状态时使用鼠标中键进行平移
VectorDraw Developer Framework(VDF)是一个用于应用程序可视化的图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
点击下载VectorDraw Developer Framework
问:动作处于活动状态时如何使用鼠标中键进行平移?
答:可以通过使用vdmoudown和vdmouseup事件来执行此操作,因为为此,您必须在要平移时暂停活动操作,然后将其恢复到当前命令。一旦使用鼠标中键进行平移,而不是使用左键完成命令,就可能发生这种情况。在下面,可以看到一个示例。
var vdcanvas = vdmanager.AttachCanvas('canvas'); vdcanvas.vdmousedown = _vdmousedown; //set to the initialize page load vdcanvas.vdmouseup = _vdmouseup; vdcanvas.ActiveAction().PanMouseButton = vdConst.MouseMiddleButton; // set the middle mouse button for panning procedure function _vdmousedown(e) { var code = e.mousebutton; //get the mouse button code if (code === 2)vdcanvas.ActiveAction().Pause(); // middle mouse code is 2 } function _vdmouseup(e) { //resume the action when finishing the panning var code = e.mousebutton; if (code === 2)vdcanvas.ActiveAction().Resume(); }
问:3D中的XYZ坐标轴始终以3D模式显示在屏幕上。在2D模式下,根据平移动作,平移动作结束后XYZ坐标轴可能会隐藏并重绘。这些轴是否可以像3D一样在2D模式下工作?
答:在平移过程中,我们有意让Wire2D模式这样工作,以提高绘制速度。在这种情况下(2D模式),VDF不重绘整个屏幕,而只是重绘一小部分,以便在2D模式下更快地绘制。你可以通过使用onScroll事件来绕过这一点,比如。
private void Form1_Load(object sender, EventArgs e) { ........ vdFramedControl.BaseControl.ActiveDocument.OnScroll += ActiveDocument_OnScroll; ........ } private void ActiveDocument_OnScroll(object sender, ref double cx, ref double cy, ref bool cancel) { cancel = true; VectorDraw.Render.vdRender render = sender as VectorDraw.Render.vdRender; if (render.PerspectiveMod == VectorDraw.Render.vdRender.VdConstPerspectiveMod.PerspectON) { VectorDraw.Geometry.Matrix m = new VectorDraw.Geometry.Matrix(); m.TranslateMatrix(-cx, -cy, 0.0d); vdFramedControl.BaseControl.ActiveDocument.World2ViewMatrix *= m; } else { vdFramedControl.BaseControl.ActiveDocument.ViewCenter += new gPoint(cx, cy); } bool doRedrawNow = render.BreakOnMessage != VectorDraw.WinMessages.MessageManager.BreakMessageMethod.None; render.Invalidate(doRedrawNow); }
使用这个事件和上面的代码,XYZ坐标轴将像3D一样呈现在2D中。
以上问答,如果您有任何的疑惑都可以在评论区留言,我们会及时回复。此系列的问答教程我们会持续更新,如果您感兴趣,可以多多关注本教程。热门文章推荐:
=======================================================
如果您对想要购买正版授权VectorDraw Developer Framework(VDF),可以联系咨询相关问题。