`

Viewport视口

    博客分类:
  • GEF
 
阅读更多

Viewport视口:编辑器中当前可以见到的部分。一般在outline视图实现鹰眼功能的时候会用到这个东西。

 

Viewport有三个子类:FocusableViewport、RulerViewport和FreeformViewport。这三个Viewport跟gef中默认提供的RootEditPart是一一对应的:

RulerRootEditPart对应于RulerViewport

FreeFormGraphicalRootEditPart和它的子类ScalableFreeformRootEditPart对应于FreeformViewport

FocusableViewport是一个内部类

 

在outline中使用Viewport:

由于Viewport是一个真实的视口它的大小跟当前编辑器打开的大小一样,而outline视图上现实的肯定会跟它实际大小不一样。所有在Viewport用到outline中的时候,有一个转换过程,这个转换能力是由Thumbnail提供。

 

Thumbnail:缩略图的意思,其功能主要也是干这个的。它还有一个子类ScrollableThumbnail:扩展了一个滚动的功能。通常我们使用的就是这个子类ScrollableThumbnail。

 

我在实现outline视图的鹰眼功能的时候,没有自己实现这些细节,我是直接使用emf提供的一个类OverviewComposite:

 

public void createControl(Composite parent)
    {
        RootEditPart rootEditPart = viewer.getRootEditPart();
        if (rootEditPart instanceof ScalableFreeformRootEditPart)
        {
            overview = new OverviewComposite(parent,
                    (ScalableFreeformRootEditPart) rootEditPart);
            overview.setLayoutData(new GridData(GridData.FILL_BOTH));
        }
    }

 这个方法是我的DiagramsOutlinePage类里面的方法,我只需要传入一个ScalableFreeformRootEditPart进去就行了。但是OverviewComposite类只能在使用ScalableFreeformRootEditPart作为rootEditPart 的时候才能使用。如果想自己实现:

 

public void createControl(Composite parent) {  
    parent.setLayout(new GridLayout(1,false));  
    Canvas canvas = new Canvas(parent, SWT.NONE);  
    canvas.setLayoutData(new GridData(GridData.FILL_BOTH));  
  
    LightweightSystem lightweightSystem = new LightweightSystem(canvas);  
  
    ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) getViewer()  
            .getRootEditPart();  
    ScrollableThumbnail thumbnail = new ScrollableThumbnail(  
            (Viewport) rootEditPart.getFigure());  
    thumbnail.setSource(rootEditPart.getFigure());  
    lightweightSystem.setContents(thumbnail);  
}  
 

 

 

 

 

分享到:
评论

相关推荐

    viewport 视口与窗口 逻辑坐标 设备坐标

    viewport 视口 窗口 GDI 坐标 映射方式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标。 Windows有关映射模式的一些术语:逻辑坐标所在的坐标系称为"窗口",将设备坐标所在的坐标系称为"视口"。

    Web-前端html+css从入门到精通 198. 移动端之viewport视口.zip

    "移动端之viewport视口"是一个关键的概念,它直接影响着移动设备上的网页展示效果。本节内容将深入探讨这个概念以及如何通过HTML和CSS优化移动端布局。 1. **什么是Viewport视口** 视口(Viewport)是移动浏览器...

    PyQt(Python+Qt)学习随笔:QAbstractScrollArea的viewPort(视口)理解.rar

    本学习随笔主要探讨的是QAbstractScrollArea中的一个核心概念——`viewPort()`,即视口。视口是用户在界面上实际看到和交互的部分,它决定了用户可以看到哪些内容以及如何滚动来查看其他内容。 首先,我们来理解...

    响应式布局 初步移动端1

    本篇文章将详细讲解响应式布局的初步知识,主要涵盖六个核心概念:媒体类型、关键字、媒体特性、媒体查询、viewport视口以及rem公式。 一、媒体类型 媒体类型定义了样式表应用于哪种类型的设备。常见的媒体类型包括...

    HTML与css基础.emmx

    HTMl与css基础思维导图,包括简单的标签,css属性内容,BFC规范,postcss与css架构,响应式布局:移动端适配方案,viewport视口grid网格布局等等

    详解VC++中的窗口与视口

    VC++中的窗口(Window)和视口(Viewport)是计算机绘图的基本概念,理解它们对于学习VC++和GDI函数非常重要。 窗口(Window) 窗口是基于逻辑坐标系的虚拟窗口,用于绘图和数据显示。在窗口中,坐标单位可以是...

    verge, 在视口中,获取viewport尺寸,检测元素.zip

    verge, 在视口中,获取viewport尺寸,检测元素 compact 是一组用本机JavaScript编写的跨浏览器 视口实用程序。 它包括检测元素是否位于当前视口中的能力。 它作为独立模块。ender模块或者作为 jQuery插件插件运行。 ...

    vue-in-viewport-directive:Vue 2指令,当元素是视口时添加CSS类

    in-viewport -元素的某些部分在视口内 above-viewport -元素的某些部分在视口上方 below-viewport -元素的某些部分在视口下方 您可能要签出此软件包的mixin版本: 。 演示: : 用法 注意,这不应应用于通过Vue...

    视口变换程序

    在计算机图形学中,视口变换(Viewport Transformation)是一个至关重要的概念,它涉及到将3D空间中的场景转换为2D屏幕上的显示。本程序“视口变换程序”旨在实现从单视口到多视口的转换,这在现代图形用户界面、...

    pixi-viewport:高度可配置的viewport2D相机,旨在与pixi.js配合使用

    从pixi-viewport v3迁移到v4 视口需要导入或要求如下: import { Viewport } from 'pixi-viewport'// orconst Viewport = require ( 'pixi-viewport' ) . Viewport 插件已移至其自己的对象: // viewport....

    前端开源库-viewport-list

    【前端开源库-viewport-list】是一个专为前端开发者设计的工具库,它的主要功能是提供一个设备视区的列表,帮助开发者更好地理解和处理不同设备在渲染网页时的可见区域,即视口。在Web开发中,视口是浏览器用于显示...

    viewport.js:jQuery 视口插件

    "viewport.js"是一款基于jQuery的视口插件,主要用于帮助开发者更好地管理网页内容在不同设备和屏幕尺寸下的显示效果。JavaScript作为网页动态交互的核心技术,是实现这一功能的基础。在这个项目中,"viewport.js-...

    前端开源库-postcss-px-to-viewport

    其中,`postcss-px-to-viewport` 是一个非常实用的前端开源工具,它允许我们将传统的像素单位(px)自动转换为基于视口的单位(vw、vh、vmin、vmax),以适应各种屏幕尺寸,从而实现更加灵活的布局。 首先,我们...

    图文并茂让你必须弄懂viewport配套示例代码.rar

    【标题】"图文并茂让你必须弄懂viewport配套示例代码.rar"的资源是一份针对网页开发中的关键概念——“视口”(viewport)的详细教程。这份压缩包包含了一个HTML示例页面(视口--viewport.html)、一个链接到相关...

    Viewport Auto-Snap

    "Viewport Auto-Snap" 是一个专门针对3D视图操作的工具...总的来说,"Viewport Auto-Snap" 是一个旨在简化3D建模中视口捕捉操作的实用工具,通过智能化的自动捕捉功能,帮助用户在3D设计领域实现更高效、更精确的工作。

    react-native-viewport:用于获取视口当前大小的实用程序

    react-native-viewport 用于获取视口当前大小的实用程序。将其添加到您的项目运行npm install react-native-viewport --save 在XCode中打开您的项目,右键单击“ Libraries ,然后单击“ Add Files to "Your Project...

    react-in-viewport:检测React组件是否在视口中

    在视口中React 使用来检测组件是否在视口中的库npm install --save react-in-viewport yarn add react-in-viewport 例子为什么一个常见的用例是在组件位于视口中时加载图像( )。 传统上,我们需要监视滚动位置并...

    Viewport-Units:视口单位示例站点

    视口单位是CSS3中引入的一种相对长度单位,它以浏览器的可视区域(viewport)作为参考基准,为网页设计提供了更灵活的布局方式。在移动设备上,随着屏幕尺寸的多样化,视口单位成为了响应式设计的重要工具。这个名为...

    【Qt】2D绘图之窗口-视口转换.rar

    通过设置`QPainter`的`viewport()`和`window()`方法,我们可以指定视口和窗口的范围。窗口通常定义了图形数据的逻辑坐标空间,而视口则是这些图形实际被绘制的物理区域。 窗口-视口转换的过程通常包括以下几个步骤...

    viewport-events:元素的视口事件

    视口事件 为 HTML 元素启用视口事件: enteredView 、 leftView 。 用法 $ npm install viewport-events var vpEvents = require ( 'viewport-events' ) ; //enable viewport events for all elements on the ...

Global site tag (gtag.js) - Google Analytics