在計算機圖形學中,一個RGB顏色模型的真彩圖形,用由紅、綠、藍三個色彩信息通道合成的,每一個通道用了8位色彩深度,共計24位,包含了全部彩色信息。爲實現圖形的透明效果,採起在圖形文件的處理與存儲中附加上另外一個8位信息的方法,這個附加的表明圖形中各個素點透明度的通道信息就被叫作Alpha通道。ide
Alpha通道使用8位二進制數,就能夠表示256級灰度,即256級的透明度。白色(值爲255)的Alpha像素用以定義不透明的彩色像素,而黑色(值爲0)的Alpha通道像素用以定義透明像素,介於黑白之間的灰度(值爲30-255)的Alpha像素用以定義不一樣程度的半透明像素。於是經過一個32位總線的圖形卡來顯示帶Alpha通道的圖形,就可能呈現出透明或半透明的視覺效果。學習
在遙感圖像中選擇Alpha通道可使圖像疊加顯示的時候不會被覆蓋,下面就介紹PIESDK如何進行Alpha通道渲染,一種是直接在屬性界面的渲染方式選擇Alpha通道也即透明度通道進行渲染;另一種就是利用代碼進行實現。本文講述後者。測試
常見的柵格數據文件格式包括tiff、tif、img、dat等,它們採用文件的方式存儲相關信息,一個Tiff數據的文件結構以下所示(GF1數據爲例):spa
[Tiff數據文件結構]code
編號視頻 |
後綴xml |
文件說明blog |
1教程 |
.tiff索引 |
基本文件,存儲柵格數據的像素、座標系、座標等信息; |
2 |
.jpg |
可選文件,柵格數據的示意圖; |
3 |
.rpb |
可選文件,座標參數文件; |
4 |
.xml |
可選文件,數據相關信息文件; |
5 |
.ovr/aux.xml |
可選文件,柵格數據金字塔文件; |
[Tiff數據文件結構說明]
第一步 |
根據文件路徑打開柵格數據集; |
第二步 |
設置Alpha通道索引並設置可用 |
第三步 |
進行拉伸渲染 |
第四步 |
結果顯示 |
接口/類 |
方法/屬性 |
說明 |
DataSource.DatasetFactor |
OpenRasterDataset |
打開柵格數據集 |
IRasterStretch |
SetMinimumMaximum |
設置最大最小值拉伸 |
StretchType |
拉伸類型 |
|
IRasterRGBRender |
AlphaBandIndex |
設置Alpha通道索引 |
UseAlphaBand |
是否使用Alpha通道 |
數據路徑 |
百度雲盤地址下/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 } |