WorldWind源码剖析系列:挂件类Widgets

WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类。它们的类图如下所示。

鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D进行绘图和处理图标纹理影像等的操作,此处不再对各个类的主要的字段、属性和方法进行描述了。感兴趣的读者可以直接阅读源码。建议阅读源码之前读者应具备一定的DirectX3D开发基础。

挂件PictureBox类被WavingFlags、TimeController等插件引擎子类所引用。

挂件ButtonWidget、ControlWidget、 TextBox、CompassWidget和LabelWidget并未被任何其它类所引用。

挂件Scrollbar和TextLabel被WavingFlags插件引擎子类所引用。而枚举型Alignment被WavingFlags、TextLabel等类所引用。

挂件搜集类子类FormWidget被Compass3D、ScaleBarLegend、TimeController和WavingFlags等插件引擎子类所引用。而枚举类WidgetEnums被挂件搜集类子类FormWidget所引用。

挂件搜集类子类PanelWidget并未被任何其它类所引用。

挂件搜集类子类的根挂件类RootWidget被DrawArgs、WorldWindow等类所引用。

挂件搜集类子类SimpleTreeNodeWidget和TreeNodeWidget并未被任何其它类所引用。

PictureBox、RootWidget、TextBox、TextLabel、Form、Utilities.、WidgetCollection、LayerManager(已注释)等类在PluginSDK工程以及PluginSDK工程的Widgets文件夹下面两处都包含。

时间: 2024-12-20 20:49:51

WorldWind源码剖析系列:挂件类Widgets的相关文章

WorldWind源码剖析系列:星球类World

星球类World代表通用的星球类,因为可能需要绘制除地球之外的其它星球,如月球.火星等.该类的类图如下. 需要说明的是,在WorldWind中星球球体的渲染和经纬网格的渲染时分别绘制的.经纬网格的渲染过程请参见文章<WorldWind源码剖析系列:星球经纬度格网的绘制>,是通过Form.OnPaint()函数激活.刷新和绘制的.星球球体的渲染过程请参见文章<WorldWind源码剖析系列:星球球体的加载与渲染>.而星球类World是绘制过程中从XML配置文件中读取参数构造的用来代表

WorldWind源码剖析系列:星球球体的加载与渲染

WorldWind源码剖析系列:星球球体的加载与渲染 WorldWind中主函数Main()的分析 在文件WorldWind.cs中主函数Main()依次作以下几个事情: 1.  使用System.Version在内部,读取软件版本信息,并格式化输出.我们在外面配置软件版本,“关于”部分中版本自动更改. 获取格式化版本号 // Establish the version number string used for user display, // such as the Splash and 

WorldWind源码剖析系列:影像存储类ImageStore

影像存储类ImageStore 影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类.该类的类图如下. 影像存储类基类ImageStore提供的主要字段.属性和方法简要描述如下: protected string     m_dataDirectory;//影像数据目录 protected double m_levelZeroTileSizeDegrees = 36; //金字塔影像的零级瓦片大

WorldWind源码剖析系列:表面影像类SurfaceImage

表面影像类SurfaceImage描述星球类(如地球)表面纹理影像.该类的类图如下. 表面影像类SurfaceImage包含的主要的字段.属性和方法如下: string m_ImageFilePath;//影像文件的路径 double m_North;//影像文件的北部边界 double m_South;//影像文件的南部边界 double m_West;//影像文件的西部边界 double m_East; //影像文件的东部边界 Texture m_Texture = null;//用影像文件

WorldWind源码剖析系列:星球表面渲染类WorldSurfaceRenderer

星球表面渲染类WorldSurfaceRenderer描述如何渲染星球类(如地球)表面影像纹理.该类的类图如下. 星球类World包含的主要的字段.属性和方法如下: public const int RenderSurfaceSize = 256;//定义渲染表面尺寸的常量 RenderToSurface m_Rts = null;//D3D定义的类型 const int m_NumberRootTilesHigh = 5;//根瓦片高度数,即纬度方向上划分的瓦片数.经度方向上划分的瓦片数为该值

WorldWind源码剖析系列:设置类SettingsBase

PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类SettingsBase内嵌了枚举型LocationType,子类WorldSettings的定义文件中附带了定义了测量模式的枚举型. 父类SettingsBase主要是对设置文件相关的设置文件名.版本.路径.载入.保存等于文件处理相关的顶层抽象.主要是以XML文件保存的,采用.NET平台提供的XmlSerial

WorldWind源码剖析系列:表面瓦片类SurfaceTile

表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型.其类图如下. 表面瓦片类SurfaceTile包含的主要的字段.属性和方法如下: int m_Level;//该瓦片所属金字塔影像的层级 double m_North;//该瓦片北边界 double m_South; //该瓦片南边界 double m_West; //该瓦片西边界 double m_East; //该瓦片东边界 bool m_Initialized = false; //该瓦片是否已被初始化 Devic

WorldWind源码剖析系列:绘制参数类DrawArgs

绘制参数类DrawArgs主要对绘制时需要的对象如:设备对象Microsoft.DirectX.Direct3D.Device.Microsoft.DirectX.Direct3D.Font字体对象.相机对象CameraBase.星球对象World.下载队列对象DownloadQueue.程序插件集合类对象WorldWind.Widgets.RootWidget.GDI+的图形对象System.Drawing.Graphics.鼠标位置对象System.Drawing.Point.待绘制的位图对

WorldWind源码剖析系列:经纬度格网类LatLongGrid

经纬度格网类LatLongGrid继承自可渲染对象类RenderableObject,是WorldWind中用来在星球外表绘制经纬度格网的封装类.其类图如下所示. 绘制经纬网格的主体函数为Render(),其内部主要调用以下函数完成绘制: ComputeGridValues()//计算格网值 RenderTropicLine()//绘制回归线 计算格网值ComputeGridValues()内部通过相机的真实视场角drawArgs.WorldCamera.TrueViewRange.Radian