VC#圖像處理課件_第1頁(yè)
VC#圖像處理課件_第2頁(yè)
VC#圖像處理課件_第3頁(yè)
VC#圖像處理課件_第4頁(yè)
VC#圖像處理課件_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

VC#圖像處理9.1VC#圖像處理基礎(chǔ)9.1.1圖像文件類型位圖.bmp,Icon.ico,GIF.gif,圖元文件.wmf,JPEG.jpg9.1.2Bitmap對(duì)象 通過Image類及派生類Bitmap實(shí)現(xiàn)圖像處理。Image類是抽象類,Bitmap封裝了GDI+位圖,可以處理由像素?cái)?shù)據(jù)定義的圖像。1.創(chuàng)建Bitmap對(duì)象:(1)從現(xiàn)有圖像建立

Bitmapbox1=newBitmap(pictureBox1.Image);(2)從圖像文件建立

Bitmapbox2=newBitmap("C:\MyImages\TestImage.bmp");(3)從現(xiàn)有的Bitmap對(duì)象建立

Bitmapbox3=newBitmap(box1);2.Bitmap類常用屬性

Height獲取對(duì)象的高度。

Palette獲取對(duì)象的調(diào)色板。

RawFormat獲取對(duì)象的格式。

Width獲取對(duì)象的寬度。3.Bitmap類常用方法

GetPixel獲取對(duì)象中指定像素的顏色。

MakeTransparent使默認(rèn)的透明顏色對(duì)此對(duì)象透明。

RotateFlip旋轉(zhuǎn)、翻轉(zhuǎn)或者同時(shí)旋轉(zhuǎn)和翻轉(zhuǎn)對(duì)象。

Save將對(duì)象以指定的格式保存到指定的Stream對(duì)象。

SetPixel設(shè)置對(duì)象中指定像素的顏色。

SetResolution設(shè)置對(duì)象的分辨率。9.2圖像的輸入和保存9.2.1圖像的輸入1.利用屬性窗口輸入2.使用文件打開對(duì)話框輸入圖像[例]使用文件打開對(duì)話框輸入圖像privatevoidbutton1_Click(objectsender ,System.EventArgse){OpenFileDialogofdlg=newOpenFileDialog();ofdlg.Filter="BmpFile(*.bmp)|*.bmp";if(ofdlg.ShowDialog()==DialogResult.OK){ Bitmapimage=newBitmap(ofdlg.FileName); pictureBox1.Image=image;}}

9.2.2圖像的保存使用Image類的Save方法。

voidSave(stringfilename) voidSave(stringfilename,ImageFormatformat) voidSave(Streamstream,ImageFormatformat)

其中,filename文件名字;format保存圖像的格式,是ImageFormat類的實(shí)例,該類的Bmp、Gif、Jpeg、Png、Icon等屬性指定圖像的格式;stream指定保存圖像的流。

[例]使用文件保存對(duì)話框保存圖像voidbutton1_Click(objectsender,System.EventArgse){ stringstr,str1; Bitmapbox1=newBitmap(pictureBox1.Image); Graphicsg=this.CreateGraphics(); saveFileDialog1.Filter="bmp文件(*.BMP)|*.BMP|AllFile(*.*)|*.*"; saveFileDialog1.ShowDialog(); str=saveFileDialog1.FileName; pictureBox1.Image.Save(str);}9.3圖像拷貝和粘貼9.3.1使用剪貼板拷貝和粘貼圖像1.剪貼板Clipboard類(1)SetDataObject方法將圖像或文本信息發(fā)送到剪貼板,格式:Clipboard.SetDataObject(objectdata[,boolsave]);

其中,data發(fā)送到剪貼板的數(shù)據(jù);save表示應(yīng)用程序退出后是否將數(shù)據(jù)保留在剪貼板上。Clipboard.SetDataObject(“復(fù)制文本”);(2)GetDataObject方法從剪貼板上獲得數(shù)據(jù)。

[例]Clipboard對(duì)象拷貝和粘貼privatevoidbutton1_Click(objectsender,EventArgse){ Clipboard.SetDataObject(pictureBox1.Image);}將剪貼板的內(nèi)容粘貼到到pictureBox2的程序:privatevoidbutton2_Click(objectsender,System.EventArgse){ IDataObjectiData=Clipboard.GetDataObject(); if(iData.GetDataPresent(DataFormats.Bitmap)){ pictureBox2.Image=(Bitmap)iData.GetData(DataFormats.Bitmap); }}9.3.2使用AxPictureClip控件拷貝和粘貼圖像1.添加ActiveX控件到工具箱添加步驟為:(1)右擊工具箱的空白處,在快捷菜單中選【選擇項(xiàng)】(2)在對(duì)話框中選“COM組件”選項(xiàng)卡。選擇“MicrosoftPictureClipControl,version6”項(xiàng)

[例]使用AxPictureClip控件剪切和粘貼圖像

//“打開”按鈕單擊事件響應(yīng)過程privatevoidbutton1_Click(objectsender,System.EventArgse){ OpenFileDialogofdlg=newOpenFileDialog(); ofdlg.Filter="BmpFile(*.bmp)|*.bmp"; if(ofdlg.ShowDialog()==DialogResult.OK){ Bitmapimage=newBitmap(ofdlg.FileName); pictureBox1.Image=image;}}//“剪切與粘貼”按鈕單擊事件privatevoidbutton2_Click(objectsender,EventArgse){ axPictureClip1.Picture=pictureBox1.Image; axPictureClip1.ClipX=10; axPictureClip1.ClipY=10; axPictureClip1.ClipHeight=150; axPictureClip1.ClipWidth=150;pictureBox2.Image=axPictureClip1.Clip; }9.4彩色圖像處理9.4.1圖像的分辨率[例]將256*256分辨率的圖像變換為64*64分辨率1.算法說明將源圖像分成4*4的子圖像塊,然后將該4*4子圖像塊的所有像素的顏色按子圖像塊的左上角像素的顏色值進(jìn)行設(shè)定

for(i=0;i<xres-4;i+=4){for(j=0;j<yres-4;j+=4){ c=box1.GetPixel(i,j); r=c.R; g=c.G; b=c.B; Colorcc=Color.FromArgb(r,g,b); for(k1=0;k1<4-1;k1++){ for(k2=0;k2<4-1;k2++) box2.SetPixel(i+k1,j+k2,cc);}}}9.4.2彩色圖像變換灰度圖像

[例]彩色圖像生成灰度圖像(1)算法說明 將彩色圖像像素的顏色值分解為三基色r、g、b,求其和的平均值,使用SetPixel方法以該平均值生成圖像。

Colorc=b.GetPixel(i,j); r=c.R;g=c.G; b=c.B; cc=(int)((r+g+b)/3); if(cc<0)cc=0; if(cc>255)cc=255; Colorc1=Color.FromArgb(cc,cc,cc); b1.SetPixel(i,j,c1);9.5動(dòng)畫(1)動(dòng)畫是由若干靜態(tài)畫面,快速交替顯示而成。因人的眼睛會(huì)產(chǎn)生視覺暫留,就會(huì)有動(dòng)的感覺。因此,我們可以使用多張圖片連續(xù)播放,來實(shí)現(xiàn)動(dòng)畫效果。(2)播放或顯示圖片使用Graphics類的DrawImage方法:

voidDrawImage(Imageimage,RectangledestRect,intsrcX,intsrcY,intsrcWidth,intsrcHeight,GraphicsUnitsrcUnit)參數(shù):image:要繪制的圖像;destRect:繪制圖像位置和大??;srcX,srcY:源圖像部分的左上角的x,y坐標(biāo);srcWidth,srcHeight:要繪制源圖像部分的寬度和高度。srcUnit:確定源矩形的度量單位,取值GraphicsUnit枚舉[例]動(dòng)畫效果 添加一個(gè)ImageList控件,為其添加動(dòng)畫圖片;添加一個(gè)定時(shí)器控件timer1。

全局變量:intcount=0; Graphicsg; //播放動(dòng)畫按鈕單擊事件響應(yīng)過程privatevoidbutton1_Click(objectsender,EventArgse){g=pictureBox1.CreateGraphics(); timer1.Interval=1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論