![C#課程設(shè)計(jì)畫圖實(shí)踐報(bào)告(修改)_第1頁(yè)](http://file4.renrendoc.com/view/876719bb1fe850c70b408b6661d67050/876719bb1fe850c70b408b6661d670501.gif)
![C#課程設(shè)計(jì)畫圖實(shí)踐報(bào)告(修改)_第2頁(yè)](http://file4.renrendoc.com/view/876719bb1fe850c70b408b6661d67050/876719bb1fe850c70b408b6661d670502.gif)
![C#課程設(shè)計(jì)畫圖實(shí)踐報(bào)告(修改)_第3頁(yè)](http://file4.renrendoc.com/view/876719bb1fe850c70b408b6661d67050/876719bb1fe850c70b408b6661d670503.gif)
![C#課程設(shè)計(jì)畫圖實(shí)踐報(bào)告(修改)_第4頁(yè)](http://file4.renrendoc.com/view/876719bb1fe850c70b408b6661d67050/876719bb1fe850c70b408b6661d670504.gif)
![C#課程設(shè)計(jì)畫圖實(shí)踐報(bào)告(修改)_第5頁(yè)](http://file4.renrendoc.com/view/876719bb1fe850c70b408b6661d67050/876719bb1fe850c70b408b6661d670505.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3/35JIANGSUUNIVERSITY《C#語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告Windows窗體與界面設(shè)計(jì)——簡(jiǎn)易畫圖學(xué)院名稱:計(jì)算機(jī)科學(xué)與通信工程專業(yè)班級(jí):嵌入式軟件1201學(xué)生姓名:史禹學(xué)生學(xué)號(hào):31206090222013年7月
目錄設(shè)計(jì)內(nèi)容………………3設(shè)計(jì)說(shuō)明………………3總體設(shè)計(jì)………….3詳細(xì)設(shè)計(jì)………….3實(shí)現(xiàn)與測(cè)試…………..4問(wèn)題及解決方案……………………18設(shè)計(jì)總結(jié)………………18參考文獻(xiàn)………………19附錄:源代碼………………………..19
一設(shè)計(jì)內(nèi)容用C#開(kāi)發(fā)簡(jiǎn)易畫圖窗口,實(shí)現(xiàn)基本畫圖功能二設(shè)計(jì)說(shuō)明(一)總體設(shè)計(jì)開(kāi)發(fā)環(huán)境:vs2010開(kāi)發(fā)語(yǔ)言:C#。開(kāi)發(fā)內(nèi)容:簡(jiǎn)易畫圖窗口。功能描述:可畫“三角形、四邊形、圓形、直線、弧形”等;可選擇畫圖線條顏色;可畫圖線條粗細(xì);可按鈕清除所畫圖形;可實(shí)現(xiàn)撤銷重做(二)詳細(xì)設(shè)計(jì)1)主界面2.文件新建:新建窗口;打開(kāi):打開(kāi)本地圖片;保存:保存圖形;退出:關(guān)閉窗口3.編輯撤銷:實(shí)現(xiàn)上一步重做:實(shí)現(xiàn)下一步4.幫助關(guān)于:顯示作者信息5.工具欄:如上圖所示,能實(shí)現(xiàn)橡皮功能6.狀態(tài)欄:1)顯示鼠標(biāo)位置。2)顯示本地時(shí)間。3)顯示作者。4)顯示當(dāng)前操作。三實(shí)現(xiàn)與測(cè)試菜單文件1)新建privatevoid新建ToolStripMenuItem_Click(objectsender,EventArgse){g=pictureBox1.CreateGraphics();width.SelectedIndex=2;othercolorbutton.BackColor=Color.Black;pictureBox1.BackColor=Color.White;pictureBox1.Size=newSize(pictureBox2.Location.X,pictureBox3.Location.Y-55);myimage=newBitmap(pictureBox1.Size.Width,pictureBox1.Size.Height,g);g.Clear(Color.White);//graphic.Clear(pictureBox1.BackColor);graphic=Graphics.FromImage(myimage);graphic.Clear(Color.White);pictureBox1.Image=myimage;pictureBox1.Refresh();g.Clear(Color.White);graphic.Clear(Color.White);toolStripStatusLabel1.Text="新建畫圖";}實(shí)現(xiàn)新建功能,創(chuàng)建畫圖板,并為各種變量取默認(rèn)值2)打開(kāi)privatevoid打開(kāi)aToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="打開(kāi)圖片";OpenFileDialogopenfile=newOpenFileDialog();openfile.InitialDirectory="C:\\users\\public\\pictures";openfile.Filter="GraphicsFile(*.jpg,*.bmp,*.gif)|*.jpg;*.bmp;*.gif|Allfiles(*.*)|*.*";openfile.ShowDialog();openfile.FilterIndex=1;openfile.RestoreDirectory=true;if(openfile.FileName.Length>0)pictureBox1.Image=Image.FromFile(openfile.FileName);}加載本地圖片,實(shí)例化OpenfileDialog,通過(guò)InitialDirectory屬性確定初始瀏覽文件的位置,F(xiàn)ilter過(guò)濾文件類型,當(dāng)選擇的文件文件名存在時(shí)加載圖片到picturebox上3)保存privatevoid保存ToolStripMenuItem_Click(objectsender,EventArgse){saveFileDialog1.Filter="圖像(*.bmp)|*.bmp";if(saveFileDialog1.ShowDialog()==DialogResult.OK){myimage.Save(saveFileDialog1.FileName,ImageFormat.Bmp);MessageBox.Show("保存成功");}同openfiledialog一樣filter過(guò)濾文件類型,將保存文件的類型限定為bmp,由于已經(jīng)手動(dòng)拖savefiledialog進(jìn)入窗體,故不必再實(shí)例化4)退出privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="退出程序¨°";Application.Exit();}用exit方法退出程序2.編輯1)撤銷//實(shí)現(xiàn)上一步privatevoid撤銷ToolStripMenuItem_Click(objectsender,EventArgse){if(list.Count!=0){Bitmapb2=newBitmap(myimage);relist.Push(b2);b1=list.Pop();graphic=Graphics.FromImage(b1);myimage=b1;g.DrawImage(b1,0,0,pictureBox1.Size.Width,pictureBox1.Size.Height);重做ToolStripMenuItem.Enabled=true;toolStripStatusLabel1.Text="撤銷";if(list.Count<1){撤銷ToolStripMenuItem.Enabled=false;toolStripStatusLabel1.Text="已到最后一步";}}}將當(dāng)前圖像push進(jìn)relist中以便后面的重做操作,將之前l(fā)ist中存儲(chǔ)的圖像釋放出來(lái),將釋放出的圖像賦給myimage,這樣就可以實(shí)現(xiàn)后臺(tái)的myimage也隨著圖像的釋放而改變,g.drawimagge()方法將釋放的圖像畫出來(lái),if可以使得當(dāng)list中沒(méi)有圖像儲(chǔ)存時(shí),撤銷按鈕不可用2)重做//實(shí)現(xiàn)下一步privatevoid重做ToolStripMenuItem_Click(objectsender,EventArgse){if(relist.Count!=0){b1=relist.Pop();Bitmapb2=newBitmap(myimage);list.Push(b2);myimage=b1;graphic=Graphics.FromImage(b1);撤?¤銷¨2ToolStripMenuItem.Enabled=true;g.DrawImage(b1,0,0,pictureBox1.Size.Width,pictureBox1.Size.Height);toolStripStatusLabel1.Text="重做";if(relist.Count<1){重做ToolStripMenuItem.Enabled=false;toolStripStatusLabel1.Text="已到最后一步";}}該操作和上面的撤銷操作原理一樣3)清除圖像privatevoid清除圖像ToolStripMenuItem_Click(objectsender,EventArgse){g.Clear(Color.White);graphic.Clear(Color.White);toolStripStatusLabel1.Text="清除圖像";pictureBox1.Cursor=Cursors.Default;linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;}//通過(guò)白色背景色填充來(lái)清除圖像,將鼠標(biāo)形狀回復(fù)為默認(rèn)的Default,同時(shí)釋放工具按鈕3.幫助1)關(guān)于privatevoid關(guān)于ToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="作者信息";MessageBox.Show("本程序由3120609022制作");}用MessageBox顯示作者信息(二)工具欄1.畫筆按鈕privatevoidfreepenbutton_Click(objectsender,EventArgse){freepenbutton.BackColor=Color.SkyBlue;linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="畫自由線";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中2.直線按鈕privatevoidtoolStripButton1_Click(objectsender,EventArgse){linebutton.BackColor=Color.SkyBlue;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="畫直線";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中3.三角形按鈕privatevoidtrianglebutton_Click(objectsender,EventArgse){linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.SkyBlue;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="畫三角形?";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中4.矩形按鈕privatevoidrectanglebutton_Click(objectsender,EventArgse){linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.SkyBlue;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;eraser.BackColor=Color.White;toolStripStatusLabel1.Text="畫矩形?";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中5.橢圓按鈕privatevoidellipsebutton_Click(objectsender,EventArgse){linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.SkyBlue;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="畫橢圓";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中6.弧按鈕privatevoidhubutton_Click(objectsender,EventArgse){linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.SkyBlue;freepenbutton.BackColor=Color.White;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="請(qǐng)選擇4個(gè)點(diǎn),畫-弧?";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中7.紅色按鈕publicvoidredbutton_Click(objectsender,EventArgse){redbutton.ForeColor=Color.Red;yellowbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中8.黃色按鈕privatevoidyellowbutton_Click(objectsender,EventArgse){yellowbutton.ForeColor=Color.Yellow;redbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中9.藍(lán)色按鈕privatevoidbluebutton_Click(objectsender,EventArgse){bluebutton.ForeColor=Color.Blue;redbutton.ForeColor=Color.White;yellowbutton.ForeColor=Color.White;}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中10.其它顏色按鈕//選擇其他顏色privatevoidothercolorbutton_Click(objectsender,EventArgse){ColorDialogcolordialog=newColorDialog();colordialog.AllowFullOpen=true;colordialog.FullOpen=true;colordialog.ShowHelp=true;colordialog.ShowDialog();othercolorbutton.BackColor=colordialog.Color;redbutton.ForeColor=Color.White;yellowbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}通過(guò)實(shí)例化colordialog并將其show出來(lái),用于自定義顏色11.線條粗細(xì)按鈕通過(guò)選擇combox的項(xiàng),用下面聲明的GetLinewidth()方法確定鋼筆粗細(xì)12.清除圖像按鈕調(diào)用菜單中清除圖像的click方法實(shí)現(xiàn)清除圖像功能13.橡皮按鈕privatevoideraser_Click(objectsender,EventArgse){freepenbutton.BackColor=Color.White;linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;;eraser.BackColor=Color.SkyBlue;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="橡皮";}通過(guò)改變按鈕的背景色,從而確定按鈕是否被選中14.0.5px按鈕//縮放圖像privatevoidzoom1button_Click(objectsender,EventArgse){pictureBox1.Width=Convert.ToInt32(pictureBox1.Width/1.414);pictureBox1.Height=Convert.ToInt32(pictureBox1.Height/1.414);}將picturebox的sizemode屬性改為zoom。這樣可使得其中的圖片隨著畫布的大小改變而改變15.2px按鈕privatevoidzoom3button_Click(objectsender,EventArgse){pictureBox1.Width=Convert.ToInt32(pictureBox1.Width*1.4);pictureBox1.Height=Convert.ToInt32(pictureBox1.Height*1.4);pictureBox1.Image=myimage;}將picturebox的sizemode屬性改為zoom。這樣可使得其中的圖片隨著畫布的大小改變而改變16.3px按鈕privatevoidzoom5button_Click(objectsender,EventArgse){pictureBox1.Width=Convert.ToInt32(pictureBox1.Width*1.7);pictureBox1.Height=Convert.ToInt32(pictureBox1.Height*1.7);pictureBox1.Image=myimage;}將picturebox的sizemode屬性改為zoom。這樣可使得其中的圖片隨著畫布的大小改變而改變
(三)方法1.聲明GetLineWidth()方法//選擇線條粗細(xì)?privatefloatGetLineWidth(){switch(width.Text){case"0.5磅:return0.5f;case"0.75磅":return0.75f;case"1磅":return1f;case"1.25磅":return1.25f;case"1.5磅":return1.5f;case"3磅":return3f;default:return1.0f;}}聲明該方法,獲取返回值作為后面鋼筆的粗細(xì)度,默認(rèn)粗細(xì)為一磅2.聲明colors()方法//用于判斷選擇的顏色privateColorcolors(){if(redbutton.ForeColor==Color.Red){color=Color.Red;returncolor;}elseif(yellowbutton.ForeColor==Color.Yellow){color=Color.Yellow;returncolor;}elseif(bluebutton.ForeColor==Color.Blue){color=Color.Blue;returncolor;}elsecolor=othercolorbutton.BackColor;returncolor;}聲明方法返回類型為color,用來(lái)自定義鋼筆顏色3.聲明hu(List<Point>Points)方法//獲取畫弧所需坐標(biāo)privateintclickCount=0;//存儲(chǔ)數(shù)據(jù)點(diǎn)List<Point>storagePoint=newList<Point>{};Pointp0,p1,p2,p3;privatevoidhu(List<Point>Points){p0=Points[0];p1=Points[1];p2=Points[2];p3=Points[3];Point[]pntArr={Points[0],Points[1],Points[2],Points[3]};}將獲取的數(shù)據(jù)點(diǎn)賦給坐標(biāo)集合,用于drawcure()方法的參數(shù)(四)事件1.pictureBox1_MouseDown事件privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse){startx=e.X;starty=e.Y;b1=newBitmap(myimage);list.Push(b1);}在mousedown事件里,當(dāng)鼠標(biāo)按下去時(shí),獲取改點(diǎn)坐標(biāo),并賦值于變量startx,starty,同時(shí)將此時(shí)的圖像push到堆棧list里用于后面的撤銷操作2.pictureBox1_MouseMove事件privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse){color=colors();penf=GetLineWidth();Penmypen=newPen(color,penf);}//為變量賦值,將colors()方法的返回值賦給color,用來(lái)確定鋼筆顏色,將getlinewidth()方法的返回值賦給penf用來(lái)確定鋼筆粗細(xì),并實(shí)例化pen//畫自由線if(freepenbutton.BackColor==Color.SkyBlue){if(e.Button==MouseButtons.Left){graphic.DrawLine(mypen,startx,starty,e.X,e.Y);g.DrawLine(mypen,startx,starty,e.X,e.Y);startx=e.X;starty=e.Y;}}//在move事件里根據(jù)鼠標(biāo)位置獲取坐標(biāo),同時(shí)利用在down事件里獲取的坐標(biāo),并令兩者坐標(biāo)相等以在很短的距離用畫直線的方法畫自由線//橡皮if(eraser.BackColor==Color.SkyBlue){if(e.Button==MouseButtons.Left){Penpen=newPen(Color.Snow,20);g.DrawLine(pen,startx,starty,e.X,e.Y);graphic.DrawLine(pen,startx,starty,e.X,e.Y);startx=e.X;starty=e.Y;}}//同畫自由線的方法一樣,不過(guò)此時(shí)將鋼筆顏色改為與背景色相同的雪白色,用以達(dá)到橡皮的效果toolStripStatusLabel2.Text=Convert.ToString(e.X);toolStripStatusLabel3.Text=Convert.ToString(e.Y);g.DrawImage(myimage,0,0,pictureBox1.ClientRectangle.Width,pictureBox1.ClientRectangle.Height);//將鼠標(biāo)所屬的位置在狀態(tài)欄上表示出來(lái),同時(shí)將myimage的圖像畫出來(lái)}該事件用于畫自由線及實(shí)現(xiàn)橡皮功能3.pictureBox1_MouseUp事件privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse){color=colors();penf=GetLineWidth();//graphic=pictureBox1.CreateGraphics();Penmypen=newPen(color,penf);//同move事件里面作用一樣,為變量賦值,并實(shí)例化鋼筆//繪制直線if(linebutton.BackColor==Color.SkyBlue){graphic.DrawLine(mypen,startx,starty,e.X,e.Y);g.DrawLine(mypen,startx,starty,e.X,e.Y);}//通過(guò)down和move事件里確定的兩個(gè)坐標(biāo),用drawline方法繪制直線//繪制三角形if(trianglebutton.BackColor==Color.SkyBlue){Pointp1=newPoint(startx,starty);Pointp2=newPoint(2*startx-e.X,e.Y);Pointp3=newPoint(e.X,e.Y);Point[]pa={p1,p2,p3};graphic.DrawPolygon(mypen,pa);g.DrawPolygon(mypen,pa);}//通過(guò)down和move事件里確定的兩個(gè)坐標(biāo),并計(jì)算出第三個(gè)坐標(biāo),用drawpolygon方法繪制等腰三角形//繪制矩形if(rectanglebutton.BackColor==Color.SkyBlue){intwidth=e.X-startx;intheight=e.Y-starty;Rectanglerect=newRectangle(startx,starty,width,height);graphic.DrawRectangle(mypen,rect);g.DrawRectangle(mypen,rect);}//通過(guò)down和move事件里確定的兩個(gè)坐標(biāo),用drawrectangle方法繪制矩形//繪制橢圓if(ellipsebutton.BackColor==Color.SkyBlue){intwidth=e.X-startx;intheight=e.Y-starty;Rectanglerect=newRectangle(startx,starty,width,height);graphic.DrawEllipse(mypen,rect);g.DrawEllipse(mypen,rect);}//同繪制矩形一樣,通過(guò)down和move事件里確定的兩個(gè)坐標(biāo)繪制,但是用的是drawellipse方法,該方法繪制的是矩形的內(nèi)切橢圓//繪制弧if(hubutton.BackColor==Color.SkyBlue){//Pointq0=newPoint(p0.X,p0.Y-150);//Pointq1=newPoint(p1.X,p1.Y-150);//Pointq2=newPoint(p2.X,p2.Y-150);//Pointq3=newPoint(p3.X,p3.Y-150);Point[]oa={p0,p1,p2,p3};graphic.DrawCurve(mypen,oa);g.DrawCurve(mypen,oa);}//利用后面存儲(chǔ)的數(shù)據(jù)點(diǎn)坐標(biāo),用drawcure方法繪制弧,由于該方法繪制的弧位置關(guān)系,將其y坐標(biāo)上移}該事件用于畫出直線、橢圓、三角形、矩形、弧等4.pictureBox1_MouseClick事件privatevoidpictureBox1_MouseClick(objectsender,MouseEventArgse){if(hubutton.BackColor==Color.SkyBlue){if(e.Button==MouseButtons.Right||e.Button==MouseButtons.Left){if(clickCount==3){//存儲(chǔ)最后一個(gè)點(diǎn)的位置畫圖點(diǎn)擊次數(shù)清零storagePoint.Add(MousePosition);hu(storagePoint);clickCount=0;storagePoint.Clear();//當(dāng)存夠三個(gè)坐標(biāo)的時(shí)候,將最后一個(gè)坐標(biāo)存到list并清零}else{//存儲(chǔ)數(shù)據(jù)點(diǎn)位置storagePoint.Add(MousePosition);clickCount++;//將鼠標(biāo)點(diǎn)擊的位置存入list}}}}該事件用于當(dāng)點(diǎn)擊鼠標(biāo)時(shí)獲取點(diǎn)擊位置的坐標(biāo)5.menuStrip1_MouseMove事件//當(dāng)鼠標(biāo)移除繪圖區(qū)域不顯示坐標(biāo)值privatevoidmenuStrip1_MouseMove(objectsender,MouseEventArgse){toolStripStatusLabel2.Text="";toolStripStatusLabel3.Text="";}當(dāng)鼠標(biāo)移出畫布時(shí)清空顯示畫布坐標(biāo)位置的label的text6.pictureBox2_MouseMove事件//改變畫布寬privatevoidpictureBox2_MouseMove(objectsender,MouseEventArgse){pictureBox2.Cursor=Cursors.VSplit;if(e.Button==MouseButtons.Left){pictureBox2.Location=newPoint(pictureBox2.Location.X+e.X,pictureBox2.Location.Y);pictureBox1.Size=newSize(pictureBox2.Location.X,pictureBox1.Size.Height);}}放一個(gè)控件在畫布的旁邊,通過(guò)改變空間的位置而改變畫布的大小,改變畫布長(zhǎng)和此操作原理相同7.timer1_Tick事件//顯示本地時(shí)間privatevoidtimer1_Tick(objectsender,EventArgse){toolStripStatusLabel7.Text=Convert.ToString(System.DateTime.Now);}在窗體中手動(dòng)添加一個(gè)timer控件,將interval屬性改為1000,使得tick事件沒(méi)一秒鐘觸發(fā)一次,這樣就可實(shí)現(xiàn)本地時(shí)間的動(dòng)態(tài)顯示(五)狀態(tài)欄向其中添加label,利用上面各個(gè)事件改變其Text屬性,實(shí)現(xiàn)實(shí)時(shí)顯示必要的信息測(cè)試
四問(wèn)題與解決方案縮放按鈕只能改變畫布大小,不能改變圖片大小解決方案:將畫布的sizemode屬性改為zoom當(dāng)既沒(méi)有畫圖也沒(méi)有加載圖片便點(diǎn)擊保存時(shí),程序崩潰解決方案:在保存前檢驗(yàn)圖片是否為空,即加入if(myimage!=null)執(zhí)行saveif(myimage!=null){if(saveFileDialog1.ShowDialog()==DialogResult.OK){myimage.Save(saveFileDialog1.FileName,ImageFormat.Bmp);MessageBox.Show("保存成功|");}}list或relist中沒(méi)有對(duì)象時(shí)仍然點(diǎn)擊撤銷或重做,會(huì)使得程序出現(xiàn)錯(cuò)誤,出現(xiàn)功能紊亂解決方案:在執(zhí)行時(shí)檢查對(duì)象數(shù)目,當(dāng)為最后一個(gè)對(duì)象釋放后,控件enable屬性設(shè)為false保存出的圖片一片漆黑解決方案:在load或新建時(shí)g和graphic用clear方法用背景色填充畫弧總是偏離坐標(biāo)解決方案:由于所獲得的mouseposition并不是畫布的坐標(biāo),所以出現(xiàn)錯(cuò)差,將mouseposition改為newpoint(e.X,e.Y)本地時(shí)間不能同步,只能顯示加載時(shí)的時(shí)間解決方案:添加Timer控件,用tick事件梅1000毫秒觸發(fā)一次,從而實(shí)現(xiàn)本地時(shí)間的同步//顯示本地時(shí)間privatevoidtimer1_Tick(objectsender,EventArgse){toolStripStatusLabel7.Text=Convert.ToString(System.DateTime.Now);}
五設(shè)計(jì)總結(jié)經(jīng)過(guò)一周的課程設(shè)計(jì),使我對(duì)VisualC#編程有了更深一層的了解。經(jīng)過(guò)編程與不斷調(diào)試,盡管依然存在很多的問(wèn)題,但努力終于有了成果。設(shè)計(jì)的雖然是簡(jiǎn)單畫圖程序,但是對(duì)于我這個(gè)菜鳥來(lái)說(shuō)仍然感覺(jué)代碼很復(fù)雜,深切地感受到想設(shè)計(jì)制作出出色的軟件需要更加努力的學(xué)習(xí),整個(gè)設(shè)計(jì)的過(guò)程也是不斷學(xué)習(xí)的一個(gè)過(guò)程,在運(yùn)用舊知識(shí)的同時(shí)也學(xué)到了不少新知識(shí),給自己大腦充電的同時(shí)也填補(bǔ)了一些相關(guān)知識(shí)方面的空白。這幾天在圖書館借的書算是這學(xué)期最多的了,終于明白老師說(shuō)的無(wú)論什么問(wèn)題,一本書上是不可能解釋的很透徹的,為了弄懂一個(gè)問(wèn)題,往往需要找好多和這個(gè)問(wèn)題有關(guān)的資料。整個(gè)設(shè)計(jì)的過(guò)程中,不僅僅只是經(jīng)歷了是失敗與成功所帶來(lái)的啟迪,還有同學(xué)之間互相幫助的友誼。通過(guò)這次課程設(shè)計(jì),掌握住到了應(yīng)該掌握住的知識(shí),也讓體會(huì)到了生活中應(yīng)該體會(huì)到的東西??傊?,這次實(shí)習(xí)是有收獲的。六參考文獻(xiàn)C#開(kāi)發(fā)實(shí)戰(zhàn)1200例清華大學(xué)出版社Visualc#2008開(kāi)發(fā)技術(shù)實(shí)例講解電子工業(yè)出版社VisualC#2008開(kāi)發(fā)技術(shù)詳解電子工業(yè)出版社C#程序設(shè)計(jì)基礎(chǔ)教程與實(shí)驗(yàn)指導(dǎo)清華大學(xué)出版社C#范例開(kāi)發(fā)大全清華大學(xué)出版社C#程序設(shè)計(jì)機(jī)械工業(yè)出版社
附錄:源代碼usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;usingSystem.Drawing.Imaging;namespace_3120609022史禹課程設(shè)計(jì){publicpartialclassdrawpicture:Form{publicdrawpicture(){InitializeComponent();}intstartx;intstarty;Bitmapb1;Colorcolor;floatpenf;Graphicsg;Imagemyimage;Graphicsgraphic;Stack<Bitmap>list=newStack<Bitmap>();Stack<Bitmap>relist=newStack<Bitmap>();privatevoiddrawpicture_Load(objectsender,EventArgse){g=pictureBox1.CreateGraphics();width.SelectedIndex=2;othercolorbutton.BackColor=Color.Black;pictureBox1.BackColor=Color.White;pictureBox1.Size=newSize(pictureBox2.Location.X,pictureBox3.Location.Y-55);myimage=newBitmap(pictureBox1.Size.Width,pictureBox1.Size.Height,g);g.Clear(Color.White);//graphic.Clear(pictureBox1.BackColor);graphic=Graphics.FromImage(myimage);graphic.Clear(Color.White);pictureBox1.Image=myimage;}privatevoid新建ToolStripMenuItem_Click(objectsender,EventArgse){g=pictureBox1.CreateGraphics();width.SelectedIndex=2;othercolorbutton.BackColor=Color.Black;pictureBox1.BackColor=Color.White;pictureBox1.Size=newSize(pictureBox2.Location.X,pictureBox3.Location.Y-55);myimage=newBitmap(pictureBox1.Size.Width,pictureBox1.Size.Height,g);g.Clear(Color.White);//graphic.Clear(pictureBox1.BackColor);graphic=Graphics.FromImage(myimage);graphic.Clear(Color.White);pictureBox1.Image=myimage;pictureBox1.Refresh();g.Clear(Color.White);graphic.Clear(Color.White);toolStripStatusLabel1.Text="新?建?§畫-圖a?";}privatevoid打?¨°開(kāi)aToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="打開(kāi)圖片";OpenFileDialogopenfile=newOpenFileDialog();openfile.InitialDirectory="C:\\users\\public\\pictures";openfile.Filter="GraphicsFile(*.jpg,*.bmp,*.gif)|*.jpg;*.bmp;*.gif|Allfiles(*.*)|*.*";openfile.ShowDialog();openfile.FilterIndex=1;openfile.RestoreDirectory=true;if(openfile.FileName.Length>0)myimage=Image.FromFile(openfile.FileName);graphic.DrawImage(myimage,0,0);g.DrawImage(myimage,0,0);}privatevoid保存ToolStripMenuItem_Click(objectsender,EventArgse){saveFileDialog1.Filter="圖像(*.bmp)|*.bmp";if(myimage!=null){if(saveFileDialog1.ShowDialog()==DialogResult.OK){myimage.Save(saveFileDialog1.FileName,ImageFormat.Bmp);MessageBox.Show("保存成功");}}}privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="退出程序";Application.Exit();}privatevoid關(guān)于ToolStripMenuItem_Click(objectsender,EventArgse){toolStripStatusLabel1.Text="作者信息";MessageBox.Show("本程序由3120609022制作");}//選擇線條?粗細(xì)privatefloatGetLineWidth(){switch(width.Text){case"0.5磅??":return0.5f;case"0.75磅??":return0.75f;case"1磅??":return1f;case"1.25磅??":return1.25f;case"1.5磅??":return1.5f;case"3磅??":return3f;default:return1.0f;}}//用于判斷選擇的顏色privateColorcolors(){if(redbutton.ForeColor==Color.Red){color=Color.Red;returncolor;}elseif(yellowbutton.ForeColor==Color.Yellow){color=Color.Yellow;returncolor;}elseif(bluebutton.ForeColor==Color.Blue){color=Color.Blue;returncolor;}elsecolor=othercolorbutton.BackColor;returncolor;}//用于判斷選擇了哪個(gè)顏色的按鈕publicvoidredbutton_Click(objectsender,EventArgse){redbutton.ForeColor=Color.Red;yellowbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}privatevoidyellowbutton_Click(objectsender,EventArgse){yellowbutton.ForeColor=Color.Yellow;redbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}privatevoidbluebutton_Click(objectsender,EventArgse){bluebutton.ForeColor=Color.Blue;redbutton.ForeColor=Color.White;yellowbutton.ForeColor=Color.White;}//選擇其他顏色privatevoidothercolorbutton_Click(objectsender,EventArgse){ColorDialogcolordialog=newColorDialog();colordialog.AllowFullOpen=true;colordialog.FullOpen=true;colordialog.ShowHelp=true;colordialog.ShowDialog();othercolorbutton.BackColor=colordialog.Color;redbutton.ForeColor=Color.White;yellowbutton.ForeColor=Color.White;bluebutton.ForeColor=Color.White;}privatevoid清除圖像ToolStripMenuItem_Click(objectsender,EventArgse){g.Clear(Color.White);graphic.Clear(Color.White);toolStripStatusLabel1.Text="清除圖像";pictureBox1.Image=null;pictureBox1.Cursor=Cursors.Default;linebutton.BackColor=Color.White;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;}//用于判斷哪個(gè)按鈕被選中privatevoidtoolStripButton1_Click(objectsender,EventArgse){linebutton.BackColor=Color.SkyBlue;ellipsebutton.BackColor=Color.White;rectanglebutton.BackColor=Color.White;trianglebutton.BackColor=Color.White;hubutton.BackColor=Color.White;freepenbutton.BackColor=Color.White;eraser.BackColor=Color.White;pictureBox1.Cursor=Cursors.Cross;toolStripStatusLabel1.Text="畫直線";}privatevoidtrianglebutton_Click(objectsender,EventArgse){li
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工方案對(duì)工程建設(shè)的經(jīng)濟(jì)效益分析
- 跨學(xué)科視角下的情感教育實(shí)踐研究
- 音色感知在小學(xué)音樂(lè)欣賞中的重要性及其教學(xué)方法
- 藝術(shù)設(shè)計(jì)與宗教文化的互動(dòng)商業(yè)空間的創(chuàng)新之路
- DB3715T 71-2025楊樹(shù)退化林修復(fù)技術(shù)規(guī)程
- 二手設(shè)備轉(zhuǎn)讓合同模板
- 2025年雜志宣傳合作協(xié)議(合同)
- 個(gè)人房屋買賣合同模板大全
- 二手房銷售合同模板大全
- 個(gè)人信用借款擔(dān)保合同范本
- 河北省邯鄲市永年區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試化學(xué)試卷(含答案)
- 2025年閥門和龍頭項(xiàng)目發(fā)展計(jì)劃
- 消防員證考試題庫(kù)2000題中級(jí)
- 農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)技術(shù)
- 【蟬媽媽】2024年抖音電商酒水行業(yè)趨勢(shì)洞察報(bào)告
- 海洋垃圾處理行業(yè)可行性分析報(bào)告
- 公共部門績(jī)效管理案例分析
- 無(wú)人機(jī)培訓(xùn)計(jì)劃表
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
- 2024屆高考英語(yǔ)詞匯3500左右
- 2024年-2025年海船船員考試-船舶人員管理考試題及答案
評(píng)論
0/150
提交評(píng)論