PIE SDK Alpha通道數據渲染

 

1.  功能簡介

    在計算機圖形學中,一個RGB顏色模型的真彩圖形,用由紅、綠、藍三個色彩信息通道合成的,每一個通道用了8位色彩深度,共計24位,包含了全部彩色信息。爲實現圖形的透明效果,採起在圖形文件的處理與存儲中附加上另外一個8位信息的方法,這個附加的表明圖形中各個素點透明度的通道信息就被叫作Alpha通道。ide

    Alpha通道使用8位二進制數,就能夠表示256級灰度,即256級的透明度。白色(值爲255)的Alpha像素用以定義不透明的彩色像素,而黑色(值爲0)的Alpha通道像素用以定義透明像素,介於黑白之間的灰度(值爲30-255)的Alpha像素用以定義不一樣程度的半透明像素。於是經過一個32位總線的圖形卡來顯示帶Alpha通道的圖形,就可能呈現出透明或半透明的視覺效果。學習

    在遙感圖像中選擇Alpha通道可使圖像疊加顯示的時候不會被覆蓋,下面就介紹PIESDK如何進行Alpha通道渲染,一種是直接在屬性界面的渲染方式選擇Alpha通道也即透明度通道進行渲染;另一種就是利用代碼進行實現。本文講述後者。測試

2. 功能實現說明

2.1. 柵格數據介紹

    常見的柵格數據文件格式包括tiff、tif、img、dat等,它們採用文件的方式存儲相關信息,一個Tiff數據的文件結構以下所示(GF1數據爲例):spa

 

[Tiff數據文件結構]code

編號視頻

後綴xml

文件說明blog

1教程

.tiff索引

基本文件,存儲柵格數據的像素、座標系、座標等信息;

2

.jpg

可選文件,柵格數據的示意圖;

3

.rpb

可選文件,座標參數文件;

4

.xml

可選文件,數據相關信息文件;

5

.ovr/aux.xml

可選文件,柵格數據金字塔文件;

[Tiff數據文件結構說明]

2.2. 實現思路及原理說明

第一步

根據文件路徑打開柵格數據集;

第二步

設置Alpha通道索引並設置可用

第三步

進行拉伸渲染

第四步

結果顯示

2.3. 核心接口與方法

接口/類

方法/屬性

說明

DataSource.DatasetFactor

OpenRasterDataset

打開柵格數據集

IRasterStretch

SetMinimumMaximum

設置最大最小值拉伸

StretchType

拉伸類型

IRasterRGBRender

AlphaBandIndex

設置Alpha通道索引

UseAlphaBand

是否使用Alpha通道

2.4. 示例代碼

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/04.World/World_Yun.tif

視頻路徑

百度雲盤地址下/PIE視頻教程/03.數據加載/13.Alpha通道渲染.avi

示例代碼

 1         /// <summary>
 2         /// 增長Alpha通道的數據渲染
 3         /// </summary>
 4         private void Test_RenderAlphaData()
 5         {
 6             //一、打開數據集
 7             IRasterLayer rasterLayer = new RasterLayer();
 8             IRasterDataset rasterDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(@"D:\MapData\測試數據\ World_Yun.tif", OpenMode.ReadOnly);
 9             //二、渲染Alpha通道
10             IRasterRGBRender rgbRender = new RasterRGBRender();
11 //註釋部分代碼無關緊要,便於學習者理解
12             //rgbRender.UseRedBand = true;
13             //rgbRender.UseGreenBand = true;
14             //rgbRender.UseBlueBand = true;
15             //指定Alpha通道的索引
16             rgbRender.AlphaBandIndex = 3;
17             rgbRender.UseAlphaBand = true;
18             //拉伸
19             IRasterStretch strech = rgbRender as IRasterStretch;
20             strech.StretchType = RasterStretchType.RasterStretch_MinimumMaximum;
21             //strech.SetMinimumMaximum(0,255,0);
22             //strech.SetMinimumMaximum(0, 255, 1);
23             //strech.SetMinimumMaximum(0, 255, 2);
24             strech.SetMinimumMaximum(0, 201, 0);
25             rasterLayer.Dataset = rasterDataset;
26             rasterLayer.Render = rgbRender as IRasterRender;
27             //三、結果顯示
28          m_HookHelper.ActiveView.FocusMap.AddLayer(rasterLayer as ILayer);         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
29         }
View Code

2.5. 示例截圖

 

相關文章
相關標籤/搜索