彩票走势图

VectorDraw Developer Framework常见问题整理(五十五):如何在动作处于活动状态时使用鼠标中键进行平移

原创|使用教程|编辑:李显亮|2020-09-11 13:58:46.410|阅读 119 次

概述:本系列教程整理了VectorDraw Developer Framework(VDF)最常见问题,教程整理的很齐全,非常适合新手学习。本文将会介绍如何在动作处于活动状态时使用鼠标中键进行平移,以及如何在平移期间使XYZ坐标以3D形式显示在2D中。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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),可以联系咨询相关问题。


标签:

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


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP