版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Visual C# Visual C# 案例教程案例教程l問(wèn)題提出問(wèn)題提出l期望效果期望效果主要功能主要功能1 1、通過(guò)工具欄按鈕啟動(dòng)、關(guān)、通過(guò)工具欄按鈕啟動(dòng)、關(guān)閉課件伴侶功能。閉課件伴侶功能。2 2、能夠選擇繪畫類型,比如、能夠選擇繪畫類型,比如是畫直線還是矩形是畫直線還是矩形2 2、能夠調(diào)整畫筆顏色、寬度、能夠調(diào)整畫筆顏色、寬度、線型。線型。4 4、能夠?qū)崿F(xiàn)屏幕放大顯示、能夠?qū)崿F(xiàn)屏幕放大顯示。技術(shù)點(diǎn)技術(shù)點(diǎn)1 1、屏幕圖像的獲取、屏幕圖像的獲取( (截屏截屏 )2 2、GraphicsGraphics類類使用使用3 3、PenPen類使用類使用4 4、ImageImage類使用類使用5 5、
2、MouseMouse事件運(yùn)用事件運(yùn)用lGraphics類可以將Graphics理解為一塊畫布,而且它還提供了許多繪畫的方法,比如畫直線、曲線、顯示圖片等 :Clear 清除整個(gè)繪圖面并以指定背景色填充。CopyFromScreen復(fù)制屏幕圖像數(shù)據(jù)。DrawEllipse 繪制一個(gè)由邊框定義的橢圓。DrawImage 在指定位置并且按原始大小繪制指定的 Image 對(duì)象。DrawLine 繪制一條連接由坐標(biāo)對(duì)指定的兩個(gè)點(diǎn)的線條。DrawLines繪制一系列連接一組 Point 結(jié)構(gòu)的線段。DrawRectangle 繪制由坐標(biāo)對(duì)、寬度和高度指定的矩形。DrawString 在指定位置用指定的Br
3、ush和Font對(duì)象繪制指定的文本字符串。FillEllipse 填充邊框所定義的橢圓的內(nèi)部。FillRectangle 填充由一對(duì)坐標(biāo)、一個(gè)寬度和一個(gè)高度指定的矩形的內(nèi)部。FromImage 從指定的 Image 對(duì)象創(chuàng)建新 Graphics 對(duì)象創(chuàng)建Graphics對(duì)象 :1、通過(guò)Paint事件處理過(guò)程中的PaintEventArgs創(chuàng)建Graphics對(duì)象Paint事件當(dāng)在控件需要被重繪時(shí)觸發(fā)。參數(shù) PaintEventArgs 提供了需要被重新繪制的Graphics對(duì)象。例private void Form1_Paint(object sender, PaintEventArgs e)
4、 Graphics g = e.Graphics; g.DrawString(Paint事件中的Graphics對(duì)象, new Font(宋體, 15), Brushes.DarkSeaGreen, new PointF(10, 20);2、通過(guò)調(diào)用可視化控件件的CreateGraphics方法來(lái)創(chuàng)建一個(gè)Graphics對(duì)象調(diào)用CreateGraphics會(huì)返回一個(gè)Graphics對(duì)象。例:private void label1_Click(object sender, EventArgs e) Graphics g = label1.CreateGraphics(); g.DrawIcon(
5、this.Icon, 0, 0); 說(shuō)明:第一行代碼我們通過(guò)調(diào)用label1的CreateGraphics方法創(chuàng)建了Graphics對(duì)象g。第二行代碼我們調(diào)用了Graphics的DrawIcon方法,該方法用來(lái)在Graphics繪制一個(gè)指定圖標(biāo)。第一個(gè)參數(shù)指出要繪制的圖標(biāo),第二個(gè)和第三個(gè)參數(shù)指出圖標(biāo)繪制的開(kāi)始位置。3、從 Image 對(duì)象創(chuàng)建Graphics 類提供了一個(gè)方法FromImage,能夠根據(jù)Image類及其派生類創(chuàng)建Graphics對(duì)象。一般用于對(duì)包含在Image類及其派生類中的圖像進(jìn)行處理。如:Bitmap b=new Bitmap(ddd.bmp);Graphics g=Gra
6、phics.FromImage(b);lPen用來(lái)繪制直線或曲線。常用屬性如下用來(lái)繪制直線或曲線。常用屬性如下 :ColorColor屬性:獲取或設(shè)置此屬性:獲取或設(shè)置此 Pen Pen 對(duì)象的顏色,其對(duì)象的顏色,其類型為類型為ColorColor。WidthWidth屬性:獲取或設(shè)置此屬性:獲取或設(shè)置此 Pen Pen 對(duì)象的寬度。對(duì)象的寬度。BrushBrush屬性:獲取或設(shè)置用于確定此屬性:獲取或設(shè)置用于確定此 Pen Pen 對(duì)象的對(duì)象的屬性的屬性的 Brush Brush 對(duì)象。對(duì)象。DashStyleDashStyle屬性:獲取或設(shè)置用于通過(guò)此屬性:獲取或設(shè)置用于通過(guò)此 Pen P
7、en 對(duì)對(duì)象繪制的線型。該屬性值為象繪制的線型。該屬性值為DashStyleDashStyle 枚舉類型。枚舉類型。lDashStyle 的成員:的成員:Custom Custom 指定用戶定義的自定義劃線段樣式指定用戶定義的自定義劃線段樣式線型由線型由DashPatternDashPattern屬性確定屬性確定 Dash Dash 指定由短劃線段組成的線條指定由短劃線段組成的線條DashDotDashDot 指定由點(diǎn)劃線圖案構(gòu)成的線條指定由點(diǎn)劃線圖案構(gòu)成的線條DashDotDotDashDotDot 指定由雙點(diǎn)劃線圖案構(gòu)成的線條指定由雙點(diǎn)劃線圖案構(gòu)成的線條Dot Dot 指定由點(diǎn)構(gòu)成的線條指
8、定由點(diǎn)構(gòu)成的線條Solid Solid 實(shí)線實(shí)線l示例:在圖片框示例:在圖片框pictureBox1上畫一條直線和一個(gè)矩形:上畫一條直線和一個(gè)矩形:private void pictureBox1_Paint(object sender, PaintEventArgs e) /創(chuàng)建一支黑色,寬度為創(chuàng)建一支黑色,寬度為2 2的的PenPen。Pen p = new Pen(Color.BlackPen p = new Pen(Color.Black, 2); , 2); / /得到得到GraphicsGraphics對(duì)象。對(duì)象。Graphics c =e.GraphicsGraphics c =
9、e.Graphics; ; /設(shè)置纖線型為短劃線,如果沒(méi)有設(shè)置,默認(rèn)設(shè)置纖線型為短劃線,如果沒(méi)有設(shè)置,默認(rèn)DashStyleDashStyle為實(shí)線。為實(shí)線。p.DashStyle = DashStyle.Dashp.DashStyle = DashStyle.Dash; ; /使用使用PenPen畫一條直線,參數(shù)分別為要使用的畫一條直線,參數(shù)分別為要使用的PenPen對(duì)象,直線起點(diǎn)和終點(diǎn)的對(duì)象,直線起點(diǎn)和終點(diǎn)的X X、Y Y坐標(biāo)。坐標(biāo)。c.DrawLine(pc.DrawLine(p, 10, 20, 100, 20); , 10, 20, 100, 20); /改變線型為點(diǎn)畫線改變線型為點(diǎn)
10、畫線p.DashStyle = DashStyle.DashDotDotp.DashStyle = DashStyle.DashDotDot; ;/使用使用PenPen畫一個(gè)矩形,參數(shù)分別為要使用的畫一個(gè)矩形,參數(shù)分別為要使用的PenPen對(duì)象,矩形的左上角對(duì)象,矩形的左上角X X、Y Y坐標(biāo)和矩形的坐標(biāo)和矩形的寬度和高度。寬度和高度。 c.DrawRectangle(pc.DrawRectangle(p, 50, 50, 100, 100); , 50, 50, 100, 100); l畫刷用來(lái)對(duì)一個(gè)區(qū)域進(jìn)行填充。畫刷用來(lái)對(duì)一個(gè)區(qū)域進(jìn)行填充。Brush是一個(gè)是一個(gè)抽象類,只能通過(guò)使用抽象類,
11、只能通過(guò)使用Brush的子類的子類 來(lái)使用來(lái)使用畫刷:畫刷: SolidBrushSolidBrush(實(shí)體畫刷)(實(shí)體畫刷)HatchBrushHatchBrush(陰影畫刷)(陰影畫刷)LinearGradientBrushLinearGradientBrush(線性漸變畫刷)(線性漸變畫刷)PathGradientBrushPathGradientBrush(路徑漸變畫刷)(路徑漸變畫刷)TextureBrushTextureBrush(紋理華刷)(紋理華刷)l步驟:步驟:1 1、確定屏幕大小。、確定屏幕大小。 Screen.PrimaryScreen.Bounds.Width Scre
12、en.PrimaryScreen.Bounds.Height2 2、創(chuàng)建位圖對(duì)象保存屏幕信息、創(chuàng)建位圖對(duì)象保存屏幕信息 Bitmap Bitmap_Screen = new Bitmap Bitmap_Screen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.HeightScreen.PrimaryScreen.Bounds.Height););3 3、為位圖創(chuàng)建、為位圖創(chuàng)建GraphicsGraphic
13、s對(duì)象對(duì)象Graphics Graphics_ScreenBitmap = Graphics Graphics_ScreenBitmap = Graphics.FromImage(Bitmap_ScreenGraphics.FromImage(Bitmap_Screen); ); 4 4、將屏幕復(fù)制內(nèi)容到新的、將屏幕復(fù)制內(nèi)容到新的GraphicsGraphics對(duì)象對(duì)象Graphics_ScreenBitmap.CopyFromScreen(new Graphics_ScreenBitmap.CopyFromScreen(new Point( 0, 0),new Point( 0, 0), P
14、oint( 0, 0),new Point( 0, 0), Screen.PrimaryScreen.Bounds.SizeScreen.PrimaryScreen.Bounds.Size););5 5、顯示屏幕截圖、顯示屏幕截圖pictureBox1.Image = Bitmap_ScreenpictureBox1.Image = Bitmap_Screen; ;l隨手畫隨手畫 隨手畫即以鼠標(biāo)點(diǎn)擊處為起點(diǎn),隨鼠標(biāo)移動(dòng)不停地繪制直線,隨手畫即以鼠標(biāo)點(diǎn)擊處為起點(diǎn),隨鼠標(biāo)移動(dòng)不停地繪制直線,直到鼠標(biāo)松開(kāi)。直到鼠標(biāo)松開(kāi)。1 1、記錄鼠標(biāo)按下位置、記錄鼠標(biāo)按下位置 /記住繪畫起點(diǎn)記住繪畫起點(diǎn)priva
15、te void PictureBox1_MouseDown(object sender, private void PictureBox1_MouseDown(object sender, MouseEventArgsMouseEventArgs e) e) if (e.Button = MouseButtons.Left if (e.Button = MouseButtons.Left)/)/判斷是否按下左鍵判斷是否按下左鍵 StartX = e.X StartX = e.X; ; StartY = e.Y StartY = e.Y; ; 2 2、在鼠標(biāo)移動(dòng)過(guò)程中,從起點(diǎn)到當(dāng)前點(diǎn)畫直線。然后
16、重新設(shè)置起點(diǎn)為當(dāng)前、在鼠標(biāo)移動(dòng)過(guò)程中,從起點(diǎn)到當(dāng)前點(diǎn)畫直線。然后重新設(shè)置起點(diǎn)為當(dāng)前鼠標(biāo)位置鼠標(biāo)位置private void PictureBox1_MouseMove(object sender, MouseEventArgsprivate void PictureBox1_MouseMove(object sender, MouseEventArgs e) e) int X = e.X; int Y = e.Y int X = e.X; int Y = e.Y; ; if (e.Button != MouseButtons.Left if (e.Button != MouseButtons.
17、Left) return; ) return; /未按左鍵、退出未按左鍵、退出 switch (drawStyleswitch (drawStyle) ) case DrawStyle.FreeHand case DrawStyle.FreeHand: : /隨手畫隨手畫 CurrentGraphics.DrawLine(pen, StartX, StartY CurrentGraphics.DrawLine(pen, StartX, StartY, X, Y); , X, Y); /畫直線畫直線 /將當(dāng)前點(diǎn)設(shè)為下一條直線的起點(diǎn)將當(dāng)前點(diǎn)設(shè)為下一條直線的起點(diǎn) StartX = X; StartY
18、StartX = X; StartY = Y; = Y; pictureBox1.Refresh(); pictureBox1.Refresh();/刷新以顯示剛繪制的內(nèi)容刷新以顯示剛繪制的內(nèi)容 break;break; l直線與橡皮筋效果直線與橡皮筋效果直線繪制是指繪制從鼠標(biāo)按下左鍵的位置為起點(diǎn),松開(kāi)左鍵的位置直線繪制是指繪制從鼠標(biāo)按下左鍵的位置為起點(diǎn),松開(kāi)左鍵的位置為終點(diǎn)的一條直線。為終點(diǎn)的一條直線。 在鼠標(biāo)移動(dòng)過(guò)程中,需要顯示橡皮筋效果。在鼠標(biāo)移動(dòng)過(guò)程中,需要顯示橡皮筋效果。思路:思路:在通過(guò)在通過(guò)CreateGraphicsCreateGraphics方法得到的方法得到的Graphic
19、sGraphics對(duì)象上繪制圖形,圖形對(duì)象上繪制圖形,圖形會(huì)被立即顯示但不會(huì)保存繪制圖形。會(huì)被立即顯示但不會(huì)保存繪制圖形。在通過(guò)在通過(guò)FromImaeFromImae方法創(chuàng)建的方法創(chuàng)建的GraphicsGraphics對(duì)象上繪制圖形,圖形可以被對(duì)象上繪制圖形,圖形可以被保存但不會(huì)立即顯示。保存但不會(huì)立即顯示。在鼠標(biāo)移動(dòng)過(guò)程中在通過(guò)在鼠標(biāo)移動(dòng)過(guò)程中在通過(guò)CreateGraphicsCreateGraphics方法得到的方法得到的GraphicsGraphics對(duì)象對(duì)象上繪制圖形,并在繪制下一圖形前將其擦除。在鼠標(biāo)松開(kāi)時(shí)在通過(guò)上繪制圖形,并在繪制下一圖形前將其擦除。在鼠標(biāo)松開(kāi)時(shí)在通過(guò)FromIma
20、eFromImae方法創(chuàng)建的方法創(chuàng)建的GraphicsGraphics對(duì)象上繪制圖形對(duì)象上繪制圖形在在MouseMove事件中繪制直線:事件中繪制直線:case DrawStyle.Linecase DrawStyle.Line: : pictureBox1.Refresh pictureBox1.Refresh();/();/刷新清除上一條臨時(shí)直線刷新清除上一條臨時(shí)直線 Graphics_PictureBox.DrawLine(pen, StartX, Graphics_PictureBox.DrawLine(pen, StartX, StartY, e.X, e.YStartY, e.X,
21、 e.Y); ); /繪制直線繪制直線 break;break; 當(dāng)鼠標(biāo)松開(kāi)時(shí):當(dāng)鼠標(biāo)松開(kāi)時(shí): private void PictureBox1_MouseUp(object sender, MouseEventArgs e) if (e.Button != MouseButtons.Left) return; /不是左鍵,退出不是左鍵,退出 int X = e.X; int Y = e.Y; switch (drawStyle)case DrawStyle.Line: CurrentGraphics.DrawLine(pen, StartX, StartYCurrentGraphics.Dr
22、awLine(pen, StartX, StartY, X, Y);, X, Y);break;break; l基本思路:基本思路:把一個(gè)小圖像繪制到一個(gè)大的尺寸范圍中時(shí),就將起到圖像把一個(gè)小圖像繪制到一個(gè)大的尺寸范圍中時(shí),就將起到圖像放大的效果。放大的效果。l步驟:步驟:1 1、創(chuàng)建一個(gè)大小為屏幕、創(chuàng)建一個(gè)大小為屏幕2 2倍倍BitmapBitmap位圖對(duì)象位圖對(duì)象Zoom_Bitmap_ScreenZoom_Bitmap_Screen:Zoom_Bitmap_Screen = new Zoom_Bitmap_Screen = new Bitmap(Screen.PrimaryScreen.
23、Bounds.Width Bitmap(Screen.PrimaryScreen.Bounds.Width * * 2, 2, Screen.PrimaryScreen.Bounds.HeightScreen.PrimaryScreen.Bounds.Height * * 2); 2);2 2、獲取、獲取Zoom_Bitmap_ScreenZoom_Bitmap_Screen的的GraphicsGraphics對(duì)象:對(duì)象:Zoom_Graphics_ScreenBitmap = Zoom_Graphics_ScreenBitmap = Graphics.FromImage(Zoom_Bitma
24、p_ScreenGraphics.FromImage(Zoom_Bitmap_Screen););3 3、將保存有屏幕原始內(nèi)容的、將保存有屏幕原始內(nèi)容的Bitmap_ScreenBitmap_Screen位圖繪制到位圖繪制到Zoom_Graphics_ScreenBitmapZoom_Graphics_ScreenBitmap上,注意在繪制時(shí)目標(biāo)寬度和高度都上,注意在繪制時(shí)目標(biāo)寬度和高度都為屏幕大小的為屏幕大小的2 2倍。倍。Zoom_Graphics_ScreenBitmap.DrawImage(Bitmap_Screen, 0, 0, Zoom_Graphics_ScreenBitmap.
25、DrawImage(Bitmap_Screen, 0, 0, Screen.PrimaryScreen.Bounds.WidthScreen.PrimaryScreen.Bounds.Width* * 2,Screen.PrimaryScreen.Bounds.Height 2,Screen.PrimaryScreen.Bounds.Height * * 2); 2);4 4、放大狀態(tài)下圖形繪制一定要使用、放大狀態(tài)下圖形繪制一定要使用Zoom_Graphics_ScreenBitmapZoom_Graphics_ScreenBitmap,所以這里要改變當(dāng)前要使用的所以這里要改變當(dāng)前要使用的Gr
26、aphicsGraphics對(duì)象:對(duì)象:CurrentGraphics =Zoom_Graphics_ScreenBitmapCurrentGraphics =Zoom_Graphics_ScreenBitmap; ;5 5、改變、改變picture1Box1picture1Box1的的ImageImage屬性屬性, ,以便顯示放大的位圖:以便顯示放大的位圖:picture1Box1.Image=Zoom_Bitmap_Screenpicture1Box1.Image=Zoom_Bitmap_Screen6 6、最初、最初picture1Box1picture1Box1的大小適合屏幕大小相同的
27、。但現(xiàn)在的大小適合屏幕大小相同的。但現(xiàn)在picture1Box1picture1Box1里的里的ImageImage大小已經(jīng)是原來(lái)的大小已經(jīng)是原來(lái)的2 2倍了,所以將倍了,所以將picture1Box1picture1Box1的大小也進(jìn)行調(diào)整的大小也進(jìn)行調(diào)整, ,使得其與位圖使得其與位圖Zoom_Bitmap_ScreenZoom_Bitmap_Screen大小相同:大小相同:picture1Box1.Size=Zoom_Bitmap_Screen.Sizepicture1Box1.Size=Zoom_Bitmap_Screen.Size; ;l思路:思路:由于放大的屏幕圖像是放在由于放大的屏
28、幕圖像是放在picture1Box1之中,之中,我們只需改變我們只需改變picture1Box1的的Left和和Top屬性來(lái)移動(dòng)屬性來(lái)移動(dòng)picture1Box1,就可以顯示出被遮擋部分。,就可以顯示出被遮擋部分。步驟:步驟:1 1、設(shè)置空白鍵狀態(tài)變量。、設(shè)置空白鍵狀態(tài)變量。2 2、記錄鼠標(biāo)按下的位置。、記錄鼠標(biāo)按下的位置。3 3、在、在MoeseMoveMoeseMove事件中。檢查空白鍵是否按下。并根據(jù)事件中。檢查空白鍵是否按下。并根據(jù)鼠標(biāo)和鼠標(biāo)和picture1Box1picture1Box1位置決定移動(dòng)方向和距離。位置決定移動(dòng)方向和距離。l空白鍵狀態(tài)變量設(shè)置:空白鍵狀態(tài)變量設(shè)置:1、在
29、有鍵按下時(shí):、在有鍵按下時(shí):private void frmMain_KeyDown(object sender, KeyEventArgsprivate void frmMain_KeyDown(object sender, KeyEventArgs e) e) if (e.KeyCode = Keys.Space if (e.KeyCode = Keys.Space) ) /如果是空格鍵如果是空格鍵 IsSpacePressedIsSpacePressed = true; = true; /空格鍵按下標(biāo)記為空格鍵按下標(biāo)記為truetrue 2 2、按鍵松開(kāi),設(shè)置空格鍵按下標(biāo)記為、按鍵松開(kāi),
30、設(shè)置空格鍵按下標(biāo)記為falsefalseprivate void frmMain_KeyUp(object sender, KeyEventArgsprivate void frmMain_KeyUp(object sender, KeyEventArgs e) e) IsSpacePressed IsSpacePressed = false; = false; l記錄鼠標(biāo)按下的位置。記錄鼠標(biāo)按下的位置。private void PictureBox1_MouseDown(object sender, private void PictureBox1_MouseDown(object send
31、er, MouseEventArgsMouseEventArgs e) e) if (e.Button = MouseButtons.Left if (e.Button = MouseButtons.Left)/)/判斷是否按判斷是否按下左鍵下左鍵 StartX = e.X StartX = e.X; ; StartY = e.Y StartY = e.Y; ; l3 3、MoeseMoveMoeseMove事件中的相關(guān)代碼:事件中的相關(guān)代碼:if (IsSpacePressed) /按下了空格鍵,為圖像漫游按下了空格鍵,為圖像漫游 /如果新位置如果新位置Let屬性大于屬性大于0,左邊會(huì)出現(xiàn)空
32、白區(qū)域,左邊會(huì)出現(xiàn)空白區(qū)域,因此因此Left屬性最大值為屬性最大值為0。/X為鼠標(biāo)當(dāng)前位置為鼠標(biāo)當(dāng)前位置X坐標(biāo),坐標(biāo),StartX為鼠標(biāo)左鍵按下(即開(kāi)始漫游)時(shí)的為鼠標(biāo)左鍵按下(即開(kāi)始漫游)時(shí)的X坐標(biāo)。坐標(biāo)。 if (pictureBox1.Left + (X - StartX) 0) pictureBox1.Left = 0;/如果新位置如果新位置Let屬性小于窗體寬度屬性小于窗體寬度Width - pictureBox1.Width,/右邊會(huì)出現(xiàn)空白區(qū)域右邊會(huì)出現(xiàn)空白區(qū)域,因此因此Left屬性最小值為屬性最小值為Width - pictureBox1.Width。 else if (pic
33、tureBox1.Left + (X - StartX) 0) pictureBox1.Top = 0; else if (pictureBox1.Top + (Y - StartY) 12 - Height) this.Top-;2、Top逐漸增大,即工具欄下移。逐漸增大,即工具欄下移。if語(yǔ)句判斷是否語(yǔ)句判斷是否Top太大,太大,Top最大值為最大值為0,保證工具欄位于屏幕上端,保證工具欄位于屏幕上端private void timer2_Tick(object sender, EventArgs e) if (Top 0) this.Top+;3、激活、激活timer2控件,工具欄上移控
34、件,工具欄上移private void toolStrip1_MouseEnter(object sender, EventArgs e) timer2.Enabled = true; timer1.Enabled = false; 4、激活、激活timer1控件,工具欄上移控件,工具欄上移private void toolStrip1_MouseLeave(object sender, EventArgs e) timer1.Enabled = true; timer2.Enabled = false; l1、路徑的創(chuàng)建、路徑的創(chuàng)建GraphicsPath p = new GraphicsP
35、ath();Point A=new Point(10,10);Point B=new Point(100,10);p.AddLine(new Point(10,10), new Point(10,10); p.AddRectangle(new Rectangle(AcceptButton,new Size(30,100);l2、繪制路徑、繪制路徑e.Graphics.DrawPath(new Pen(Color.Red), p);l3、路徑填充、路徑填充 e.Graphics.FillPath(new SolidBrush(Color.Red), p); l1、區(qū)域的創(chuàng)建、區(qū)域的創(chuàng)建Graph
36、icsPath p = new GraphicsPathGraphicsPath p = new GraphicsPath();();p.AddStringp.AddString(文字區(qū)域文字區(qū)域, new FontFamily, new FontFamily(宋體宋體), ), (int)FontStyle.Bold, 100.0f, new Point(10, 10), (int)FontStyle.Bold, 100.0f, new Point(10, 10), new StringFormatnew StringFormat();();Region r = new Region(pRe
37、gion r = new Region(p););l2、區(qū)域的填充、區(qū)域的填充e.Graphics.FillRegion(Brushes.Bluee.Graphics.FillRegion(Brushes.Blue, r); , r); l3、區(qū)域的剪裁效果、區(qū)域的剪裁效果this.Region=r;l 坐標(biāo)系類型坐標(biāo)系類型 :1 1、世界坐標(biāo)是用于建立特殊圖形世界模型的坐世界坐標(biāo)是用于建立特殊圖形世界模型的坐標(biāo)系,也是在標(biāo)系,也是在 .NET Framework .NET Framework 中傳遞給方法中傳遞給方法的坐標(biāo)系。的坐標(biāo)系。2 2、頁(yè)面坐標(biāo)系是指繪圖圖面(如窗體或控件)頁(yè)面坐標(biāo)系
38、是指繪圖圖面(如窗體或控件)使用的坐標(biāo)系。使用的坐標(biāo)系。3 3、設(shè)備坐標(biāo)系是在其上進(jìn)行繪制的物理設(shè)備設(shè)備坐標(biāo)系是在其上進(jìn)行繪制的物理設(shè)備(如屏幕或紙張)所使用的坐標(biāo)系。(如屏幕或紙張)所使用的坐標(biāo)系。 l平移變換平移變換 myGraphics.TranslateTransform(100, 50);myGraphics.DrawLine(myPen, 0, 0, 160, 80);l旋轉(zhuǎn)與縮放旋轉(zhuǎn)與縮放RotateTransformRotateTransform方用來(lái)旋轉(zhuǎn)坐標(biāo)系方用來(lái)旋轉(zhuǎn)坐標(biāo)系聲明:聲明:public void RotateTransform(floatpublic void
39、RotateTransform(float angle); angle);參數(shù):參數(shù):angleangle為要旋轉(zhuǎn)的角度,以度為單位。為要旋轉(zhuǎn)的角度,以度為單位。ScaleTransformScaleTransform方法用來(lái)縮放坐標(biāo)系方法用來(lái)縮放坐標(biāo)系聲明:聲明:public void ScaleTransform(float sx, float sypublic void ScaleTransform(float sx, float sy););參數(shù)參數(shù): :sxsx為為X X方向上縮放因子方向上縮放因子sysy為為Y Y方向縮放因子。方向縮放因子。示例:示例:private void F
40、orm1_Paint(object sender, PaintEventArgs e) /創(chuàng)建半透明紅色畫刷創(chuàng)建半透明紅色畫刷 Brush b=new SolidBrush (Color.FromArgb(125,Color.Red); e.Graphics.FillRectangle(b, 100, 50, 100, 40); /填充矩形填充矩形 e.Graphics.RotateTransform(30); /坐標(biāo)系旋轉(zhuǎn)坐標(biāo)系旋轉(zhuǎn)30度度 e.Graphics.FillRectangle(b, 100, 50, 100, 40); /填充矩形填充矩形 e.Graphics.ResetTra
41、nsform();/恢復(fù)原是坐標(biāo)系恢復(fù)原是坐標(biāo)系 /設(shè)置放大因子,設(shè)置放大因子,X坐標(biāo)為原來(lái)的坐標(biāo)為原來(lái)的0.3倍,倍,Y坐標(biāo)為原來(lái)的坐標(biāo)為原來(lái)的2倍倍 e.Graphics.ScaleTransform(0.3f,2); e.Graphics.FillRectangle(b, 100, 50, 100, 40); /填充矩形填充矩形l對(duì)圖片實(shí)現(xiàn)像素處理對(duì)圖片實(shí)現(xiàn)像素處理1、 獲取獲取位圖指定點(diǎn)顏色位圖指定點(diǎn)顏色public Color GetPixel(int x, int y);2、設(shè)置位圖指點(diǎn)點(diǎn)顏色、設(shè)置位圖指點(diǎn)點(diǎn)顏色 public void SetPixel(int x, int y,
42、 Color color);示例:示例:/創(chuàng)建新位圖,內(nèi)容為創(chuàng)建新位圖,內(nèi)容為OldImage中的內(nèi)容。中的內(nèi)容。Bitmap允許對(duì)每允許對(duì)每個(gè)像素進(jìn)行操作個(gè)像素進(jìn)行操作 b = new Bitmap(OldImage); for (int i = 0; i b.Width; i+) for (int j = 0; j b.Height; j+) Color c1 = b.GetPixel(i, j); /根據(jù)原始顏色和軌跡條的值重新生成新顏色根據(jù)原始顏色和軌跡條的值重新生成新顏色 Color c2 = Color.FromArgb(c1.R * trackBar1.Value / 100, c1.G * trackBar1.Value / 100, c1.B * trackBar1.Value / 100); b.SetPixel(i, j, c2); /設(shè)置像素點(diǎn)新
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年橋梁經(jīng)濟(jì)分析與投資評(píng)估
- 2026春招:行政專員面試題及答案
- 2026春招:銷售代表真題及答案
- 2026春招:西部航空試題及答案
- 貨運(yùn)安全課件
- 心理咨詢部服務(wù)模式改進(jìn)
- 醫(yī)療信息錄入員禮儀與職業(yè)操守
- 醫(yī)藥銷售代表禮儀培訓(xùn)內(nèi)容
- 醫(yī)療大數(shù)據(jù)與臨床決策支持
- 護(hù)理團(tuán)隊(duì)建設(shè)與護(hù)理文化建設(shè)探索
- DB54∕T 0359-2024 雅江雪牛育肥期飼養(yǎng)管理技術(shù)規(guī)程
- 貴州省貴陽(yáng)市2023-2024學(xué)年高一上學(xué)期期末考試語(yǔ)文試卷(含答案)
- 電氣類儀器儀表使用
- 老年醫(yī)學(xué)發(fā)展與挑戰(zhàn)
- 9.2奉獻(xiàn)社會(huì)我踐行課件-2025-2026學(xué)年統(tǒng)編版 道德與法治 八年級(jí)上冊(cè)
- 煙花爆竹零售店安全生產(chǎn)責(zé)任制
- 2025江蘇蘇州市昆山鈔票紙業(yè)有限公司招聘10人筆試歷年參考題庫(kù)附帶答案詳解
- 商業(yè)中庭防墜網(wǎng)施工方案
- 交付異常應(yīng)急預(yù)案
- 砌體工程監(jiān)理實(shí)施細(xì)則及操作規(guī)范
- GB/T 222-2025鋼及合金成品化學(xué)成分允許偏差
評(píng)論
0/150
提交評(píng)論