資源描述:
《圖形圖象程序設(shè)計(jì)基礎(chǔ)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、圖形圖象程序設(shè)計(jì)基礎(chǔ)常用顏色模式RGBRGB模式ABGRRGBA模式ARGBBGRA模式RGB(255,0,0)0xff0000ff0xffff000024位32位存放顏色的數(shù)據(jù)結(jié)構(gòu)及其合成RGB模式:COLORREFclr;clr=RGB(R,G,B);RGBA模式:UINTclr;clr=(A<<24)+(B<<16)+(G<<8)+R;BGRA模式:UINTclr;clr=(A<<24)+(R<<16)+(G<<8)+B;顏色疊加(以BGRA模式為例)UINToverlay_color(UINTclr1,UINTclr2){intr,g,b,a,r
2、1,b1,g1,r2,g2,b2,a1,a2;UINTnew_color;a1=(UINT)clr1>>24;a2=(UINT)clr2>>24;if(a2==0)returnclr1;if(a1==255)returnclr1;if(a1==0)returnclr2;ARGBr1=clr1&0x00ff0000;g1=clr1&0x0000ff00;b1=clr1&0x000000ff;r2=clr2&0x00ff0000;g2=clr2&0x0000ff00;b2=clr2&0x000000ff;r=(UINT)((255-a1)*r2+a1*r1)
3、>>24;g=(UINT)((255-a1)*g2+a1*g1)>>16;b=(UINT)((255-a1)*b2+a1*b1)>>8;a=(a1>a2?a1:a2);ARGBnew_color=(UINT)(a<<24)+(UINT)(r<<16)+(UINT)(g<<8)+b;returnnew_color;}ARGBBMP文件結(jié)構(gòu)BMP文件組成文件頭BITMAPFILEHEADER位圖信息頭BITMAPINFOHEADER顏色信息RGBQUAD圖形數(shù)據(jù)BITMAPDATABMP文件頭BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類(lèi)型、文件大小和位圖起始位置等
4、信息。其結(jié)構(gòu)定義如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;//位圖文件的類(lèi)型,必須為BMDWORDbfSize;//位圖文件的大小,以字節(jié)為單位WORDbfReserved1;//位圖文件保留字,必須為0WORDbfReserved2;//位圖文件保留字,必須為0DWORDbfOffBits;//位圖數(shù)據(jù)的起始位置,以相對(duì)于位圖//文件頭的偏移量表示,以字節(jié)為單位}BITMAPFILEHEADER;位圖信息頭BMP位圖信息頭數(shù)據(jù)用于說(shuō)明位圖的尺寸等信息。typedefstructtagBITMAPINF
5、OHEADER{DWORDbiSize;//本結(jié)構(gòu)所占用字節(jié)數(shù)LONGbiWidth;//位圖的寬度,以像素為單位LONGbiHeight;//位圖的高度,以像素為單位WORDbiPlanes;//目標(biāo)設(shè)備的級(jí)別,必須為1WORDbiBitCount//每個(gè)像素所需的位數(shù),必須是1(雙色),//4(16色),8(256色)或24(真彩色)之一DWORDbiCompression;//位圖壓縮類(lèi)型,必須是0(不壓縮),//1(BI_RLE8壓縮類(lèi)型)或2(BI_RLE4壓縮類(lèi)型)之一DWORDbiSizeImage;//位圖的大小,以字節(jié)為單位LONGbi
6、XPelsPerMeter;//位圖水平分辨率,每行像素?cái)?shù)LONGbiYPelsPerMeter;//位圖垂直分辨率,每列像素?cái)?shù)DWORDbiClrUsed;//位圖實(shí)際使用的顏色表中的顏色數(shù)DWORDbiClrImportant;//位圖顯示過(guò)程中重要的顏色數(shù)}BITMAPINFOHEADER;顏色表顏色表用于說(shuō)明位圖中的顏色,它有若干個(gè)表項(xiàng),每一個(gè)表項(xiàng)是一個(gè)RGBQUAD類(lèi)型的結(jié)構(gòu),定義一種顏色。RGBQUAD結(jié)構(gòu)的定義如下:typedefstructtagRGBQUAD{BYTErgbBlue;//藍(lán)色的亮度(值范圍為0-255)BYTErgbGr
7、een;//綠色的亮度(值范圍為0-255)BYTErgbRed;//紅色的亮度(值范圍為0-255)BYTErgbReserved;//保留,必須為0}RGBQUAD;位圖信息位圖信息頭和顏色表組成位圖信息。BITMAPINFO結(jié)構(gòu)定義如下:typedefstructtagBITMAPINFO{BITMAPINFOHEADERbmiHeader;//位圖信息頭RGBQUADbmiColors[1];//顏色表}BITMAPINFO;常用的顯示方法(1)直接寫(xiě)入設(shè)備緩沖區(qū)(速度慢)如:dc.SetPixel(x,y,RBG(255,0,0,));(2)先
8、寫(xiě)入內(nèi)存圖象緩沖區(qū),然后一次性寫(xiě)入設(shè)備緩沖區(qū)(速度快)UINT*buf=newU