彩票走势图

VDF常见问题整理(五):如何更改视图旋转的方式?

翻译|使用教程|编辑:况鱼杰|2019-08-14 14:46:05.117|阅读 282 次

概述:本系列教程整理了VectorDraw Developer Framework(VDF)最常见问题,教程整理的很齐全,非常适合新手学习,本节教程将会介绍如何在能够转动圆圈的情况下,并在View3D VROT中更改视图旋转的方式。

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

相关链接:

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

VectorDraw Developer Framework试用版下载


问:

    是否能够在转动圆圈的情况下,在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;
        }

关注慧聚IT微信公众号 ☟☟☟,了解产品的最新动态及最新资讯。

dd2629f30d553d56ccaf7164fdcb784e-sz_28327.webp.jpg

8月省钱式嗨购|Office 365三大版本免费送,云端办公更畅快!


标签:

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

文章转载自:

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP