編程教程第7章圖形圖像基礎(chǔ)_第1頁(yè)
編程教程第7章圖形圖像基礎(chǔ)_第2頁(yè)
編程教程第7章圖形圖像基礎(chǔ)_第3頁(yè)
編程教程第7章圖形圖像基礎(chǔ)_第4頁(yè)
編程教程第7章圖形圖像基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

7章C#圖形圖像編程基編寫圖形程序時(shí)需要使用GDI(GraphicsDevceInterface,圖形設(shè)備接口,從程序設(shè)計(jì)的角度看,GDI包括兩部分:一部分是GDI對(duì)象,另一部分是GDI函數(shù)。GDI對(duì)象定義了GDI函數(shù)使用的工具和環(huán)境變量,而GDI函數(shù)使用GDI對(duì)象繪制各種圖C#GDI+(GraphiceDeviceInterface圖形設(shè)備接口)版本,GDI+是GDIGDI+概述GDI+是微軟在Windows2000以后操作系統(tǒng)中提供的新的圖形設(shè)備接口,其通過(guò)一套部署為托管代碼的類來(lái)展現(xiàn),這套類被稱為GDIGDI+主要提供了以下三類服務(wù):二維矢量圖形:GDI+提供了圖形基元自身信息的類(或結(jié)構(gòu)體)、圖形基元繪制方式信息的類以及實(shí)際進(jìn)行繪制的類。圖像處理:大多數(shù)都難以劃定為直線和曲線的集合,無(wú)法使用二維矢量圖形方式進(jìn)行處理。因此,GDI+為我們提供了Bitmap、Image等類,它們可用于顯示、操作和保存BMP、JPG、GIF等圖像格式。文字顯示:GDI+我們要進(jìn)行圖形編程,就必須先講解Graphics類,同時(shí)我們還必須掌握Pen、BrushRectangleGDI+比GDI優(yōu)越主要表現(xiàn)在兩個(gè)方面:第(一)GDI+通過(guò)提供新功能(例如:漸變畫筆和alpha混合)擴(kuò)展了GDI的功能;第(二)修訂了編程模型,使圖形編程更GraphicsGraphicsGDI與特定的設(shè)備上下文關(guān)聯(lián)。畫圖方法都被包括在Graphics類中,在畫任何對(duì)象(如:Circle,Rectangle)時(shí),我們首先要?jiǎng)?chuàng)建一個(gè)Graphics類實(shí)例,這個(gè)實(shí)例相當(dāng)于建立了一塊畫布,有了畫布才可以用各種畫圖方法進(jìn)行繪圖。繪圖程序的設(shè)計(jì)過(guò)程一般分為兩個(gè)步驟(一創(chuàng)建Graphics通常我們使用下述三種方法來(lái)創(chuàng)建一個(gè)Graphics對(duì)象。方法一、利用控件或窗體的Paint中的PainEventArgsprivatevoidform1_Paint(objectsender,PaintEventArgs{Graphicsg=}protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=}CreateGraphicsGraphicsg=GraphicsFromImage//名為“g1.jpg”的位于當(dāng)前路徑Imageimg=Image.FromFile("g1.jpg");//建立Image象GraphicsgGraphics.FromImage(img);//Graphics對(duì)象1.Graphics類的方法成員有了一個(gè)Graphics的對(duì)象后,就可以利用該對(duì)象的成員進(jìn)行各種各樣圖形的繪制,表7.1Graphics類的常用方法成員。Dra.NET中,GDI+SystemSystem.DrawingSystem.Drawing.Imaging、System.Drawing.Darwing2D和System.Drawing.Text等命名空間中,因此在開(kāi)始用GDI+類之前,需要先相應(yīng)名空間。在C#應(yīng)用程序中使用using命令已用給定名空間或類,下面是一個(gè)C#應(yīng)用程序命名空間的例子:usingusingSystem.Collections.Generic;usingSystem.Data; usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Drawing.Imaging;常用畫圖對(duì)象在創(chuàng)建了Graphics對(duì)象后,就可以用它開(kāi)始繪圖了,可以畫線、填充圖形、顯示文Rectangle:Point:描述一對(duì)有序的x,yPen使用畫筆時(shí),需要先實(shí)例化一個(gè)畫筆對(duì)象,主要有以下幾種方法。用指定的顏色實(shí)例化一只畫筆的方法如下:publicpublicpublicPen(Brush,publicPen(Color,float);Penpn=newPenpn=newPen7.2在自然界中,顏色大都由(A)和三基色(R,G,B)所組成。在GDI+中,通過(guò)Color結(jié)構(gòu)封裝對(duì)顏色的定義,Color結(jié)構(gòu)中,除了提供(A,R,G,B)以外,還提供許多系統(tǒng)定義的顏色,如Pink(粉顏色,另外,還提供許多靜態(tài)成員,用于對(duì)顏色進(jìn)行操作。Color7.37.3顏色的基本屬AColoralpha(0~255BColor(0~255GColor(0~255RColor(0~255Color,對(duì)于自定義的顏色,將返回RGBColor7.47.4顏色的基本方從指定的預(yù)定義顏色創(chuàng)建一個(gè)Color結(jié)構(gòu)。從預(yù)定義顏色的指定名稱創(chuàng)建一個(gè)Color結(jié)構(gòu)。Color結(jié)構(gòu)變量可以通過(guò)已有顏色構(gòu)造,也可以通過(guò)RGB建立,例如:Colorclr1==Colorclr3=在圖像處理中一般需要獲取或設(shè)置像素的顏色值,獲取一幅圖像的某個(gè)像素顏色值的具體步驟如下:BitmapmyBitmap=newColorc=new=intr,g,b;r=c.R;FontFont類定義特定文本格式,包括字體、字號(hào)和字形屬性。Font類的常用構(gòu)造函數(shù)是csg字體名te字形,其中字號(hào)和字體為可選項(xiàng)和cg字體名t字號(hào)為t的FontFamily的字符串表示形式。下面是定義一個(gè)Font對(duì)象的例子代碼:FontFamilyfontFamily=newFontfont=new字體常用屬性如表7.57.5字體的常獲取此FontBrush類是一個(gè)抽象的基類,因此它不能被實(shí)例化,我們總是用它的派生類進(jìn)行實(shí)例化一個(gè)畫刷對(duì)象,當(dāng)我們對(duì)圖形內(nèi)部進(jìn)行填充操作時(shí)就會(huì)用到畫刷,關(guān)于畫刷在7.1.5中有詳細(xì)講解。一組整數(shù),共四個(gè),表示一個(gè)矩形的位置和大小。矩形結(jié)構(gòu)通常用來(lái)在窗體上畫矩形,除了利用它的構(gòu)造函數(shù)構(gòu)造矩形對(duì)象外,還可以使用Rectangle結(jié)構(gòu)的屬性成員,其屬性成員如表7.6所示。測(cè)試矩形寬和高是否為XXYYRetangle結(jié)構(gòu)的構(gòu)造函數(shù)有以下兩個(gè)和public平位置;yPointPointpt1=newPoint(30,30);Pointpt2=newPoint(110,100);基本圖形繪制舉例【例7.1Form17.1畫一個(gè)矩protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=e.GraphicsRectanglerect=newRectangle(50,30,100,100);LinearGradientBrushlBrush=newLinearGradientBrush(rect,g.FillRectangle(lBrush,rect);}7.17.2】畫一個(gè)弧形。弧形函數(shù)格式如下:publicvoidDrawArc(Penpen,Rectanglerect,Floats Form1OnPaintprotectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=e.GraphicsPenpn=newPen(Rectanglerect=newRectangle(50,50,200,100);}7.27.2畫一個(gè)【例7.3protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=e.Graphics;Penpn=newPen(Color.Blue);Pointpt1=newPointpt2=newPoint(110,100);}7.37.3【例7.4protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=e.GraphicsPenpn=newPen(Color.Blue,100Rectanglerect=newRectangle(50,50,200,100);g.DrawEllipse(pn,rect);}7.4protectedoverridevoidOnPaint(PaintEventArgs{Fontfnt=newFont("Verdana",16);Graphicsg=e.Graphics;g.DrawString("GDI+World",fnt,newSolidBrush(Color.Red),}7.57.5輸出文protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=g.FillRectangle(newSolidBrush(Color.White), GraphicsPathpath=newGraphicsPath(newPoint[]{newPoint(40,140),newPoint(275,newPoint(105,225),newPoint(190,300),newPoint(50,350),newPoint(20,180),},newbyte[]{PathGradientBrushpgb=newPathGradientBrush(path);pgb.SurroundColors=newColor[]{Color.Orange,g.FillPath(pgb,}7.67.6填充路畫刷和畫刷類型Brush類型是一個(gè)抽象類,所以它不能被實(shí)例化,也就是不能直接應(yīng)用,但是我們可以利用它的派生類,如:HatchBrush、SolidBrsh和TextureBush等。畫刷類型一般在System.Drawing命名空間中,如果應(yīng)用HatchBrush和GradientBrush畫刷,需要在程序中引入System.Drawing.Drawing2D命名空間。它是一種一般的畫刷,通常只用一種顏色去填充GDI+protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=SolidBrushsdBrush1=newSolidBrush(Color.Red);SolidBrushsdBrush2=newSolidBrush(Color.Green);SolidBrushsdBrush3=newSolidBrush(Color.Blue);g.FillEllipse(sdBrush2,20,40,60,70);Rectanglerect=newRectangle(0,0,200,g.FillPie(sdBrush3,0,0,200,40,0.0f,30.0f);PointFpoint1=newPointF(50.0f,250.0f);PointFpoint2=newPointF(100.0f,25.0f);PointFpoint3=newPointF(150.0f,40.0f);PointFpoint4=newPointF(250.0f,50.0f);PointFpoint5=newPointF(300.0f,100.0f);PointF[]curvePoints={point1,point2,point3,point4,point5};g.FillPolygon(sdBrush1,curvePoints);}7.7

7.7SolidBrush應(yīng)HatcBrshSystem.Drawing.Drawing2D命名空間中。陰影畫刷有兩種顏色:前景色和背景色,以及6種陰影。前景色定義線條的顏色,背景色定各線條之間間隙的顏色。HathBushpublicHatchBrush(HatchStyle,ColorpublicHatchBrush(HatchStyle,Colorforecolor,Colorbackcolor);HatchStyle枚舉值指定可用于HatchBrush對(duì)象的不同圖案。HatchStyle7.725%25%下面代碼顯示了HatchBrush畫刷的使用。protectedoverridevoidOnPaint(PaintEventArgs{Graphicsg=HatchBrushhBrush1=newHatchBrush(HatchStyle.DiagonalCross,Color.Chocolate,Color.Red);HatchBrushhBrush2=newHatchBrush(HatchStyle.DashedHorizontal,Color.Green,Color.Black);HatchBrushhBrush3=newHatchBrush(HatchStyle.Weave,Color.BlueViolet,Color.Blue);g.FillEllipse(hBrush1,20,80,60,Rectanglerect=newRectangle(0,0,200,g.FillPie(hBrush3,0,0,200,40,0.0f,30.0f);PointFpoint1=newPointF(50.0f,250.0f);PointFpoint2=newPointF(100.0f,25.0f);PointFpoint3=newPointF(150.0f,40.0f);PointFpoint4=newPointF(250.0f,50.0f);PointFpoint5=newPointF(300.0f,100.0f);PointF[]curvePoints={point1,point2,point3,point4,point5};g.FillPolygon(hBrush2,curvePoints);}7.8

紋理畫刷擁有圖案,并且通常使用它來(lái)填充封閉的圖形。為了對(duì)它初始化,可以使用一個(gè)已經(jīng)存在的別人設(shè)計(jì)好了的圖案,或使用常用的設(shè)計(jì)程序設(shè)計(jì)的自己的圖案,同時(shí)應(yīng)該使圖案為常用圖形文件格式,如BMP格式文件。這里有一個(gè)設(shè)計(jì)好的位圖,被為Papers.bmp文件。privatevoidForm1_Paint(objectsender,PaintEventArgs{Graphicsg=//根據(jù)文件名創(chuàng)建原始大小的bitmap對(duì)Bitmapbitmap=newbitmap=newBitmap(bitmap,this. TextureBrushmyBrush=newTextureBrush(bitmap);g.FillEllipse(myBrush,this. }7.9LinearGradientBrush和PathGradientBrush(漸變畫刷PathGradientBrushpublicLinearGradientBrush(Pointpoint1,Pointpoint2,Colorcolor1,Colorpoint1:表示線性漸變起始點(diǎn)的Point結(jié)構(gòu)。point2:表示線性漸變終結(jié)點(diǎn)的Point結(jié)構(gòu)。color1:表示線性漸變起始色的Color結(jié)構(gòu)。color2:表示線性漸變結(jié)束色的Color結(jié)構(gòu)。privatevoidForm1_Paint(objectsender,PaintEventArgs{Graphicsg=LinearGradientBrushmyBrush= Rectangle,Color.White,Color.Blue, }7.10publicPathGradientBrush(GraphicsPathprivatevoidForm1_Paint(objectsender,PaintEventArgs{Graphicsg=PointcenterPoint=newPoint(150,100);intR=60;GraphicsPathpath=newGraphicsPath();PathGradientBrushbrush=newPathGradientBrush(path);brush.CenterPoint=brush.CenterColorColor.Red;brush.SurroundColors=newColor[]{Color.Plum};centerPoint=newPoint(350,100);R=path=newbrush=newPathGradientBrush(path);brush.CenterPoint=centerPoint;brush.CenterColor=Color.Red;brush.SurroundColors=newColor[]{Color.Black,Color.Blue,Color.Green};}C#本節(jié)主要介紹C#圖像處理基礎(chǔ)知識(shí)以及對(duì)圖像的基本處理方法和技巧,主要包括圖像的加載、變換和保存等操作。C#圖像處理概述GDI+支持的圖像格式有BMP、GIF、JPEG、EXIF、PNG、TIFF、ICON、WMF、EMF等,幾乎涵蓋了所有的常用圖像格式,使用GDI+可以顯示和處理多種格式的圖像文件。GDI+提供了Image、Bitmap和Metafile等類用于圖像處理,為用戶進(jìn)行圖像格式的加載、變換和保存等操作提供了方便。ImageImageBitmapMetafileMetafile定義圖形圖元文件,圖元文件包含描述一系列圖形操作的記錄,這些操作可以被記錄(構(gòu)造)和被回放(顯示。Bitmap封裝GDI+位圖,此位圖由圖形圖像及其屬性的像素?cái)?shù)據(jù)組成,Bitmap是用于處理由像素?cái)?shù)據(jù)定義的圖像的對(duì)象,它屬于System.Dawing命名空間,該命名空間提供了對(duì)GDI+基本圖形功能的。Bitmap類常用方法和屬性如表7.8所示。7.8Bitmap常用屬性和方ImageImage獲取此ImageImage獲取此Bitmap使默認(rèn)的透明顏色對(duì)此Bitmap旋轉(zhuǎn)、翻轉(zhuǎn)或者同事旋轉(zhuǎn)和翻轉(zhuǎn)Image對(duì)象。將ImageStream設(shè)置BitmapBitmapBitmapBitmapBitmap對(duì)象Bitmapbox1=new從指定的圖像文件建立Bitmap對(duì)象,其中“C:\MyImages\TestImage.bmpBitmapbox2=newBitmapBitmapBitmapbox3=new圖像的輸入和保存在窗體或圖形框內(nèi)輸入圖像有兩種方式:(一)在窗體設(shè)計(jì)時(shí)使用圖形框?qū)ο蟮腎mage屬性輸入(二)在程序中通過(guò)打開(kāi)文件框輸入。方法(一Image窗體設(shè)計(jì)時(shí)使用對(duì)象的Image(pictureBox17.12單擊Image“本地資源,單擊【導(dǎo)入(M)...】將彈出一個(gè)“打開(kāi)”框,如圖7.13所示。7.12Image屬方法(二、使用“打開(kāi)文件”框輸入圖像在窗體上添加一個(gè)命令按鈕(bttn1和一個(gè)圖形框?qū)ο螅╬ictureBox1,雙擊命令按鈕,在響應(yīng)方法中輸入如下代碼:privatevoidbutton1_Click(objectsender,EventArgs{OpenFileDialogofdlg=newOpenFileDialog();ofdlg.Filter="BMPFile(*.bmp)|*.bmp";if(ofdlg.ShowDialog()=={Bitmapimage=newBitmap(ofdlg.FileName);pictureBox1.Image=image;}}執(zhí)行該程序時(shí),使用“打開(kāi)文件”框,選擇圖像文件,該圖像將會(huì)被打開(kāi),并顯示在pictreBx1【例7.7建立如圖7.14PictureBox雙【打開(kāi)圖像命令按鈕編輯按鈕的單擊響應(yīng)函數(shù)其代碼同方(二)中所寫代碼,在此不再重復(fù)。7.14圖像輸運(yùn)行后單【打開(kāi)圖像按鈕彈出一“打開(kāi)文件框選擇圖象文件名,運(yùn)行結(jié)果如圖7.15所示。7.15運(yùn)行結(jié)當(dāng)使用按鈕和保存框保存文件時(shí),加入保存按鈕和PictureBox控件,窗體設(shè)計(jì)如圖7.16所示。保存命令鈕的單擊的響應(yīng)函數(shù)代碼如下privatevoidbutton2_Click(objectsender,EventArgs{stringBitmapbox1=newBitmap(pictureBox1.Image);SaveFileDialogsfdlg=newSaveFileDialog();sfdlg.Filterbmp文件(*.BMP)|*.BMP|AllFile(*.*)|*.*";str=sfdlg.FileName;}執(zhí)行該過(guò)程時(shí),將打開(kāi)“另存為 框,如圖7.17所示7.16保存圖圖7.17“另存為”privatevoidbutton3_Click(objectsender,EventArgs{stringBitmapbox1=newBitmap(pictureBox1.Image);SaveFileDialogsfdlg=newsfdlg.Filterbmp文件(*.jpeg)|*.jpeg|Allstr=sfdlg.FileName;}獲取位圖圖像格式(BMP)獲取增強(qiáng)型Windows圖元文件圖像格式(EMF獲取可交換圖像文件(Exif獲取圖形交換格式(GIF)ImageForma對(duì)象的Guid獲取Windows獲取聯(lián)合圖像專家組(JPEG獲取W3C可移植網(wǎng)絡(luò)圖形(PNG獲取圖像文件格式(TIFF)圖像格式獲取Windows圖元文件(WMF圖像的拷貝和粘貼圖像拷貝和粘貼是圖像處理的基本操作之一,通常有兩種方法來(lái)完成圖像的拷貝和粘貼:一種可以使用剪貼板拷貝和粘貼圖像,一種使用AxPictureClip控件拷貝和粘貼圖像。剪貼板是在Windwos系統(tǒng)中單獨(dú)預(yù)留出來(lái)的一塊內(nèi)存,它用來(lái)暫時(shí)存放在Windwos應(yīng)用程序間要交換的數(shù)據(jù),使用剪貼板對(duì)象可以輕松實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)交換,這些數(shù)據(jù)包括圖像或文本。在C#中,剪貼板通過(guò)Clipboard類來(lái)實(shí)現(xiàn),Clipboard類的常用方法如表7.10所示。Bitmap從剪貼板中檢索數(shù)據(jù)。SetDataObjectSetDataObjectClipboard.SetDataObject(Object):將非持久性數(shù)據(jù)置于系統(tǒng)剪貼板中。由.NETCompactFrameworkstringstr="MaheshwritingdatatotheClipboard";publicstaticIDataObjectIdataObjectGetDataPresentGetDataObjectIDataObjectiData=Clipboard.GetDataObject();if(iData.GetDataPresent(DataFormats.Text)){stringstr}【例7.8建立如圖7.18所示的窗體。在窗體上天加兩個(gè)框控件和兩個(gè)命令按鈕控件。利用第一個(gè)框的屬性窗口為其輸入圖像。雙擊【】命令按鈕,輸入如下代碼,將圖像置于剪貼板中privatevoidbutton1_Click(objectsender,EventArgs{}雙擊【粘貼】命令按鈕,輸入如下代碼,從剪貼板中檢索出圖像,并顯示于第二個(gè)框中。privatevoidbutton2_Click(objectsender,EventArgs{IDataObjectiData=Clipboard.GetDataObject();if(iData.GetDataPresent(DataFormats.Bitmap)){pictureBox2.Image=(Bitmap)iData.GetData}}運(yùn)行程序,首先單擊【】命令按鈕,然后單擊【粘貼】命令按鈕,運(yùn)行結(jié)果如圖7.197.18剪貼板窗體設(shè)7.19剪貼板圖像使用AxPictureClipAxPictureClip控件不是常規(guī)控件,而是一個(gè)ActiveX控件。因此,工具箱中沒(méi)有(1右鍵單擊工具箱的空白處,在彈出的快捷菜單中選擇【選擇項(xiàng)】菜單項(xiàng),則彈出“選擇工具箱項(xiàng)”框,如圖7.20所示。7.20添加AxPictureClip控(2)在該框中的【COM組件】選項(xiàng)卡中選擇【PictureClipAxPictureClip控件可用于隨機(jī)方法或者枚舉方法指定源位圖中剪切區(qū)域如下:使用隨機(jī)方法來(lái)作為剪切區(qū)域選擇源位圖的通過(guò)使用ClipX和ClipY屬性指定的剪切區(qū)域左上角,ClipHeight和ClipWidth屬性確定剪切區(qū)域的區(qū)域。當(dāng)想要查號(hào)0、1、2和等等,通過(guò)使用GraphicCell屬性來(lái)單個(gè)單元。當(dāng)源位圖圖像與要單【例7.9】使用AxPictureClip建立如圖7.21示的窗體。在窗體上天加兩個(gè)框控件和兩個(gè)命令按鈕控件。privatevoidbutton1_Click(objectsender,EventArgs{OpenFileDialogofdlg=newOpenFileDialog();ofdlg.Filter="BMPFile(*.bmp)|*.bmp";if(ofdlg.ShowDialog()=={Bitmapimage=newBitmap(ofdlg.FileName);pictureBox1.Image=image;}}雙【與粘貼命令按鈕輸入如下代碼將圖像到第二個(gè)框中privatevoidbutton2_Click(objectsender,EventArgs{axPictureClip1.PicturepictureBox1.Image;axPictureClip1.Cols=6;//將分成6列axPictureClip1.Rows=3;//將分成3行{=塊}catch(Exception{}}7.21所示,然后單擊【與粘貼】命令按鈕,運(yùn)行結(jié)果如圖7.22示。

圖7.21打開(kāi)后效也可以使用隨機(jī)方法,只需將上述例子中的【與粘貼】命令按鈕的響應(yīng)方法privatevoidbutton2_Click(objectsender,EventArgs{axPictureClip1.Picture=pictureBox1.Image;axPictureClip1.ClipX=15;axPictureClip1.ClipY=axPictureClip1.ClipHeight=axPictureClip1.ClipWidth=50;pictureBox2.Image=axPictureClip1.Clip;//}7.22粘貼注意:如果沒(méi)有PICCLP32.OCX控件,需要自行或PICCLP32.OCX到本機(jī),并通過(guò)程序REGSVR32該組件。例如,如果該文件在C:\WINDOWS\system32\路徑下,可以通過(guò)如下命令行語(yǔ)句實(shí)現(xiàn):REGSVR32彩像處600向的點(diǎn)數(shù)。圖像分辨率越大,越能表現(xiàn)更豐富的細(xì)節(jié)。圖像的分辨率決定了圖像與原物的進(jìn)辨率高,反之為分辨率低,分辨率的高低取決于采樣操作。例如,對(duì)于一幅256*256分7.10256*25664*64算法說(shuō)明:將256*256分辨率的圖像變換為64*64分辨率方法是將源圖像分成4*4的子圖像塊,然后將該4*4子圖像塊的所有像素的顏色按F(i,j)的顏色值進(jìn)行設(shè)定,達(dá)建立一個(gè)如圖7.23所示界面的項(xiàng)目privatevoidbutton3_Click(objectsender,EventArgs{Colorc=new//把框中的給一個(gè)Bitmap類Bitmapbox1=newBitmap(pictureBox1.Image);Bitmapbox2=newBitmap(pictureBox1.Image);intr,g,b,size,k1,k2,xres,yres,i,j;xres=pictureBox1.Image.Width;yres=pictureBox1.Image.Height;size=4;for(i=0;i<=xres-1;i+={for(j=0;j<=yres-1;j+={c=box1.GetPixel(i,j);r=c.R;g=b=Colorcc=Color.FromArgb(r,g,b);for(k1=0;k1<=size-1;k1++){for(k2=0;k2<=size-1;{if(i+k1<pictureBox1.Image.Width)box2.SetPixel(i+k1,j+k2,}}}}pictureBox2.Image=box2;//賦到框中}256*25664*647.237.23分辨(R(G稱為三基色。每種基色可取0~255的值,因此由三基色可組合成(256*256*256)1677萬(wàn)種顏色,每種顏色都有其對(duì)應(yīng)的R、G、B值。例如,常見(jiàn)的7種顏色及其對(duì)應(yīng)的R、G、B7.117.117種顏色

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論