彩票走势图

VDF常见问题整理(四十九):VDF的鼠标滚轮控制

翻译|使用教程|编辑:况鱼杰|2020-01-02 09:35:45.930|阅读 189 次

概述:本系列教程整理了VectorDraw Developer Framework(VDF)最常见问题,教程整理的很齐全,非常适合新手学习。本文将会展示如何实现禁用鼠标平移以及鼠标滚轮缩放。

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

相关链接:

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

点击立即下载VectorDraw Developer Framework


问:

请问是否可以实现禁用鼠标平移以及鼠标滚轮缩放。在禁用滚轮同时,还想要控制图形的水平和垂直滚动。怎样才能做到这一点?

答:

禁用鼠标中键平移和鼠标滚轮放大/缩小:

对于包装器,我们必须获取如下的vdDocument对象。

VectorDraw.Professional.vdObjects.vdDocument doc = vd.ActiveDocument.WrapperObject as VectorDraw.Professional.vdObjects.vdDocument;
doc.MouseWheelZoomScale = 1.0; 

1.0表示禁用了鼠标滚轮。 0.8(小于1.0)或1.2(大于1.0)值可以反转鼠标滚轮功能。
为了禁用平移,您必须使用JobStart事件,如下所示。

vd.JobStart += new AxVDrawLib5._DVdrawEvents_JobStartEventHandler(vd_JobStart);

void vd_JobStart(object sender, AxVDrawLib5._DVdrawEvents_JobStartEvent e)
{if (e.jobName == "BaseAction_ActionPan") e.cancel = 1;}
要滚动视图,请使用如下代码
  ... // these events must be used
            doc.MouseWheelZoomScale = 1.0d; // disable mouse wheel zoom
            
            doc.ActionStart += new vdDocument.ActionStartEventHandler(doc_ActionStart);
            vdFramedControl1.BaseControl.MouseWheel += new MouseEventHandler(BaseControl_MouseWheel);
        ...

        void BaseControl_MouseWheel(object sender, MouseEventArgs e)
        {
            if ((e != null) && (e.Delta != 0))
            {
                vdDocument doc = vdFramedControl1.BaseControl.ActiveDocument;
                double height = doc.ActiveRender.Height * doc.ActiveRender.PixelSize;
                double width = doc.ActiveRender.Width * doc.ActiveRender.PixelSize;
                double stepY = height * (e.Delta / Math.Abs(e.Delta)) / 10.0d;
                double stepX = width * (-1.0d * e.Delta / Math.Abs(e.Delta)) / 10.0d; 
                if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                { // if Shift key is pressed scroll horizontally
                    doc.ScrollActiveActionRenderView(stepX, 0.0d, true); // scroll only in dX
                }
                else //else scroll vertically
                {
                    doc.ScrollActiveActionRenderView(0.0d, stepY, true); // scroll only in dY
                }
            }
        }

        void doc_ActionStart(object sender, string actionName, ref bool cancel)
        {
            if (actionName == "BaseAction_ActionPan") cancel = true; // cancel middle mouse button pan
        }
        

以上问答,如果您有任何的疑惑都可以在评论区留言,我们会及时回复。此系列的问答教程我们会持续更新,如果您感兴趣,可以多多关注本教程。

热门文章推荐:

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

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

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

慧聚IT



标签:

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

文章转载自:

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP