2 座標系統和顏色變換

2021-10-21 20:18:03 字數 4016 閱讀 9054

gdi+定義了三種形式的座標系統:世界座標系統、頁面座標系統和裝置座標系統

測量相當於文件區域左上角的位置和測量相當於螢幕(桌面)左上角的位置之間的區別非常重要,gdi+為它們指定了不同的名稱:

gdi+在裝置繪圖表面(如螢幕、印表機)繪製圖形之前,圖形的座標系統要經過幾步變換

現在改變到頁面座標系統,仍畫一條從點a(0,0)到b(120,80)的直線,但這次用點(50,40)來替代左上角的點(0,0)作為原點。

gdi+使用point表示乙個點。這是二維空間中乙個畫素的表示方式。許多gdi+函式例如drawline()都以point作為引數。

宣告和構造point的**如下:

point p = new point(1,1);
有一些公共屬性可以獲得和設定point的x和y的座標

②size

gdi+使用size表示乙個尺寸(畫素)。size結構包含寬度和高度。

宣告和構造size的**如下:

size s = new size(5,5);
有一些公共屬性可以獲得和設定size的寬度和高度。

③rectangle

gdi+在許多不同的地方使用這個結構,以指定矩形的座標。point結構定義矩形的左上角,size定義其大小。rectangle有兩個建構函式。乙個建構函式的引數是x座標,y座標,寬度和高度,另乙個建構函式的引數是point結構和size結構。

宣告和構建rectangle的兩個範例如下:

rectangle r1 = new rectangle(1,2,5,6);

point p = new point(1,2);

size s = new size(5,6);

rectangle = new rectangle(p,s);

有一些公共屬性可以獲得和設定rectangle的4個點和大小。另外,還有其他屬性和方法可以完成諸如測試矩形是否為空,確定矩形是否與另乙個矩形相交,提取兩個矩形的相交部分,合併兩個矩形等工作。

④graphicspaths

​ graphicspath類表示一些列連續的線條和曲線。在構造一條路徑時,可以新增線條、bezier曲線、圓弧、餅形圖、多邊形和矩形等。在構造一條複雜的路徑後,可以用乙個操作繪製路徑:呼叫drawpath()。可以呼叫fillpath填充路徑。

​ 使用乙個點陣列和pathtypes構造graphicspath,pathtypes是乙個byte陣列,其中的每個元素對應於點陣列中的每乙個元素,並給出了路徑如何通過這些點來構造的其他資訊。例如:如果點是路徑的起始點,那麼這個點的路徑型別就是pathpointtype.start。如果點是兩個線條的連線點,那麼這個點的路徑型別就是pathpointtype.line。如果點用於構造一條從前一點到後一點之間的bezier曲線,路徑型別就是pathpointtype.bezier。

region類是乙個複雜的圖形,由矩形和路徑組成。在構造乙個regions後,就可以使用fillregion()方法繪製該區域。下面的例項建立乙個region物件,並繪製到視窗中。

下面的**建立乙個區域,給他新增乙個rectangle和乙個graphicspath,再用藍色填充該區域:

​ gdi+提供用於儲存和處理圖形影象的image類和bitmap類,image物件和bitmap物件將每個畫素的顏色都儲存為32位的數:紅色、綠色、藍色和alpha各佔8位。這四個分量的值都是0到255.在紅色、綠色、藍色分量中,0表示沒有亮度,255表示最大亮度。alpha分量指定顏色的透明度,0表示透明,255表示完全不透明。顏色向量採用四元組形式(紅色,綠色,藍色,alpha)。例如,顏色向量(255,0,0,255)表示一種沒有綠色、藍色,但紅色達到最大亮度的不透明顏色。這就意味著我們能用乙個如下的4x4的顏色變換矩陣去修改四個分量中的任意乙個。

katex parse error: undefined control sequence: \matrix at position 9: \left[ \̲m̲a̲t̲r̲i̲x̲

\right]$$

​ 上面的矩陣計算表明用5×5矩陣來完成顏色變換是必須的。

顏色成分的飽和度:假設乙個畫素的紅色成分的值為a,那麼紅色成分的飽和度的值為a/255.gdi+用顏色成分的飽和度來表示乙個畫素的每個顏色成分的值。例如,如果乙個畫素的rgba值是(0,255,0,255),那麼用顏色成分的飽和度來表示就是(0,1,0,1)。換句話說,改變乙個顏色成分的值,事實上就是改變該顏色成分的飽和度。那麼顏色變換矩陣到底是什麼呢?事實上,乙個顏色變換矩陣就是一類計算顏色成分飽和度的方法。通常情況下,乙個顏色變換矩陣的定義同以下所示的用單位矩陣定義乙個預設值是一樣的。

katex parse error: undefined control sequence: \matrix at position 9: \left[ \̲m̲a̲t̲r̲i̲x̲{ \ 1 & 0 & 0 …

​ 按照矩陣計算的定義,任何乙個1×5向量與上述的5×5單位矩陣相乘其值不變,然而通過變更矩陣的主對角線上的相關值,將改變向量的值,實現增加或減少rgb成分的飽和度,從而完成顏色變換。

​ 在gdi+中可通過imageattributes物件的函式setcolormatrix()來完成顏色變換矩陣的更改。

setcolormatrix()函式具有如下幾種形式:

imageattributes.setcolormatrix(colormatrix newcolormatrix);

imageattributes.setcolormatrix(colormatrix newcolormatrix,colormatrixflag mode);

imageattributes.setcolormatrix(colormatrix newcolormatrix,colormatrixflag mode,coloradjusttype type);

顏色變換這邊真的沒看懂。emmmm,先略過,等需要的時候再去深入。

ibutes.setcolormatrix(colormatrix newcolormatrix);

imageattributes.setcolormatrix(colormatrix newcolormatrix,colormatrixflag mode);

imageattributes.setcolormatrix(colormatrix newcolormatrix,colormatrixflag mode,coloradjusttype type);

顏色變換這邊真的沒看懂。emmmm,先略過,等需要的時候再去深入。

svg基礎 4 座標和變換

座標和變換 元素在整個教程中都是通過座標定位的。現在是該討論這些座標所適應的系統的時候了。當首次訪問文件時,使用者 在大多數情況下,即瀏覽器 確定影象的觀察口。觀察口是文件實際可見的部分並且由乙個座標系統組成,該座標系統以左上角的點 0,0 為原點,其正的 x 軸向右而正的 y 軸向下。座標系統中的...

GIS座標系統與投影變換 2 座標系統的參照

有人可能會問了,你前言都不拉不拉說了那麼久,怎麼到現在還沒有到正題,煩不煩啊 不好意思,我這人就是比較嘮叨,哼 這裡,我們先想清楚一件事情 那麼多人花了那麼大的力氣,搞出各種座標系來為難我們這些gis學子,到底是為了什麼?說白了,就是用來標示地球上的任何乙個位置的。學過物理的我們肯定知道,所謂位置,...

openGL系列 1 座標變換

理解物體座標系 世界座標系 相機座標系 裁剪座標系不難,關鍵是要知道對這些座標系的操作分別對應哪些函式。1 gltranslatef glscalef glrotatef 在模型 視角座標系內進行平移 縮放 旋轉 2 glulookat 對眼睛 相機 座標系進行變換 3 通用型 glmatrixmo...