WorldWind源码剖析系列:图像助手类ImageHelper

图像助手类ImageHelper封装了对各种图像的操作。该类类图如下。

提供的主要处理方法基本上都是静态函数,简要描述如下:

public static bool IsGdiSupportedImageFormat(string imageFileName) 静态函数用给定的图像文件名称来判断该图像是否是Windows GDI+支持的图像。

public static Texture LoadTexture(string textureFileName) 静态函数从指定的图像文件路径加载并返回纹理对象,依次调用其另外3中重载形式。

public static void CreateAlphaPngFromBrightness(string srcFilePath, string destinationPngFilePath) 静态函数用来从明度创建Alpha通道的Png图像(待确认)。

public static Image LoadImage(string bitmapFileName) 静态函数用来从指定的文件路径加载图像。内部调用System.Drawing.Image.FromFile(bitmapFileName)函数。

public static Cursor LoadCursor(string relativePath) 静态函数用来从指定的光标文件路径加载自定义光标。内部调用System.Windows.Form.Cursor类的构造函数。

public static Texture LoadIconTexture(string relativePath) 静态函数从指定路径加载Icon图像并返回纹理对象。内部调用Microsoft.DirectX.Direct3D.TextureLoader.FromFile()函数。

private static Bitmap CreateDefaultImage()静态函数功能是:当请求的Bitmap图像不可用时创建默认的图像来使用。

public static string FindResource(string relativePath)静态函数根据给定的相对路径名判断文件资源是否存在,如存在则返回全路径名。

public static void ConvertToDxt1(string originalImagePath, string outputDdsPath, bool eraseOriginal) 静态函数将GDI+可读取的任意类型图像传唤成DXT1级DDS纹理文件。

public static void ConvertToDxt1(Stream originalImageStream, string outputDdsPath)

public static void ConvertToDxt3(string originalImagePath, string outputDdsPath, bool eraseOriginal)

public static void ConvertToDxt3(Stream originalImageStream, string outputDdsPath)

public static void ConvertToDds(string originalImagePath, string outputDdsPath, Format format, bool eraseOriginal)

这四个静态函数功能基本和上面的静态函数一样,这里就不详细介绍了。

时间: 2024-08-05 02:21:44

WorldWind源码剖析系列:图像助手类ImageHelper的相关文章

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

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

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

WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D进行绘图和处理图标纹理影像等的操作,此处不再对各个类的主要的字段.属性和方法进行描述了.感兴趣的读者可以直接阅读源码.建议阅读源码之前读者应具备一定的DirectX3D开发基础. 挂件PictureBox类被WavingFlags.TimeController等插件引擎子类所引用. 挂件Button

WorldWind源码剖析系列:角度类

PluginSDK中的角度结构体Angle类图如下所示. 角度结构体主要定义了一个弧度表示角度值的字段:double Radians.还有几个表示角度最大值.最小值.非数值和零角度等字段.定义了一个Degrees属性,分别用数学引擎类的弧度和角度相互转换函数完成Radians字段值的设置与获取. public double Degrees { get { return MathEngine.RadiansToDegrees(this.Radians);} set { this.Radians =

WorldWind源码剖析系列:日志类Log

Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs : EventArgs//日志事件参数 { public int level; public string category; public string message; public LogEventArgs(int _l, string _c, string _m) { level = _l

WorldWind源码剖析系列:BMNG类构造函数深入分析

BMNG构造函数深入分析 一.主要类图 二.主要功能: 1)        BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括“ \Data\Earth\BmngBathy\”目录下的随源代码发布的12幅图像.从NASA服务器上下载的经过分层分级过的瓦片影像.根节点m_RenderableList主要用来存放下面三个RenderableObjectList类型对象:m_BlueMarbleList.m_ShadedList

WorldWind源码剖析系列:相机类[未完]

PluginSDK中的相机类CameraBase是三维计算机图形学中的概念.观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致.实际上,Direct3D和OpenGL都是先通过对现实世界中的场景先进行世界变换,再通过设置观察矩阵以在场景中安置一个虚拟相机,构建一个视景体来裁剪场景的可见区域,然后在通过投影变换(平行投影或透视投影),获取三维场景的“像”,最后再通过视口变换,将场景的“像”光栅化输出到二维显示屏幕上.如下图所示. 在三维地形系统中,通常定义一个虚拟相机来实现对三维场

WorldWind源码剖析系列:四元数类

PluginSDK中的Quaternion4d类可能是感觉Microsoft.DirectX. Quaternion类不太实用或不够用,自己有重新写的. 四元数是英国数学家哈密顿(W.R.Hamilton)在1843年发现的,由于矩阵论的不断丰富和不断完善,人们更乐意采用矩阵来解决实际工程中的问题,这导致四元数在相当长的时间里没有被人们重视,更没有得到实际的应用.随着计算机图形学的发展,人们发现利用四元数可以很好地处理解决旋转运算等问题,这一理论又开始被人们重视,并在许多领域逐渐得到应用. 四元

WorldWind源码剖析系列:缓冲类Cache

缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据.Google Earth也采用类似机制处理用户离线浏览漫游问题.该类类图如下. 提供的主要参数设置有:缓冲区上限CacheUpperLimit(默认最大为2GB).缓冲区上限CacheUpperLimit(默认最大为2GB).缓冲区下限CacheLowerLimit(默认上限的75%,即1.5GB).缓冲区目录CacheDirectory.缓冲区清理频率

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源码剖析系列:星球类World

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