2022年計算機圖形學期末實驗報告畫餅分圖區(qū)域著色_第1頁
2022年計算機圖形學期末實驗報告畫餅分圖區(qū)域著色_第2頁
2022年計算機圖形學期末實驗報告畫餅分圖區(qū)域著色_第3頁
2022年計算機圖形學期末實驗報告畫餅分圖區(qū)域著色_第4頁
2022年計算機圖形學期末實驗報告畫餅分圖區(qū)域著色_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 計算機科學系實驗報告 (首頁)課程名稱 計算機圖形學 班 級 實驗名稱 計算機圖形學綜合實驗 (二) 指引教師 姓名 學 號 日 期 11月16日 一、實驗目旳1畫餅分圖2區(qū)域著色二、實驗設備與環(huán)境Windows XP操作系統(tǒng)、Visual C+6.0三、算法闡明、程序清單及運營成果畫餅分圖算法闡明用到了畫圓和直線旳算法思想,將兩者結合起來,分別畫一種圓和兩條直線,長度為半徑。畫餅分圖源程序:void CMyView:OnPiegraph() / TODO: Add your command handler code here/先畫一種圓 CDC* pDC=GetDC(); int xc=2

2、00,yc=200,radius=100,c=RGB(0,0,255); int x1=0,y1=radius,p=3-2*radius; while(x1SetPixel(xc+x1,yc+y1,c); pDC-SetPixel(xc-x1,yc+y1,c); pDC-SetPixel(xc+x1,yc-y1,c); pDC-SetPixel(xc-x1,yc-y1,c); pDC-SetPixel(xc+y1,yc+x1,c); pDC-SetPixel(xc-y1,yc+x1,c); pDC-SetPixel(xc+y1,yc-x1,c); pDC-SetPixel(xc-y1,yc-x

3、1,c); if(pSetPixel(xc+x1,yc+y1,c); pDC-SetPixel(xc-x1,yc+y1,c); pDC-SetPixel(xc+x1,yc-y1,c); pDC-SetPixel(xc-x1,yc-y1,c); pDC-SetPixel(xc+y1,yc+x1,c); pDC-SetPixel(xc-y1,yc+x1,c); pDC-SetPixel(xc+y1,yc-x1,c); pDC-SetPixel(xc-y1,yc-x1,c);/畫一條直線,作為圓旳半徑 int x3=100,y3=200,x4=200,y4=300;int i,s1,s2,inter

4、change;int x,y,deltax,deltay,f,temp;x=200;y=200;deltax=abs(x4-x3); deltay=abs(y4-y3); if(x4-x3=0)s1=1;else s1=1;if(y4-y3=0)s2=-1;else s2=-1;if(deltaydeltax)temp=deltax;deltax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax; pDC-SetPixel(x,y,c);for(i=1;i=0)if(interchange=1)x+=s1

5、; else y+=s2; pDC-SetPixel(x,y,c);f=f-2*deltax;else if(interchange=1)y+=s2;else x+=s1;f=f+2*deltay;/再畫一條半徑 int x5=100,y5=300,x6=200,y6=400;int j,s3,s4,interchange1;x=200;y=200;deltax=abs(x6-x5); deltay=abs(y6-y5); if(x6-x5=0)s3=1;else s3=-1;if(y6-y5=0)s4=1;else s4=-1;if(deltaydeltax)temp=deltax;delt

6、ax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax; pDC-SetPixel(x,y,c);for(i=1;i=0)if(interchange=1)x+=s3; else y+=s4; pDC-SetPixel(x,y,c);f=f-2*deltax;else if(interchange=1)y+=s4;else x+=s3;f=f+2*deltay;實驗成果抓圖區(qū)域著色算法闡明1、 在VC中用MFC生成一種窗口。2、在該窗口旳CSaoMiaoView類中添加ScanLineFill4()函數。

7、 3、在OnDraw函數中調用ScanLineFill4 ()函數。4、調試運營。編程與代碼oldcolor = RGB(0,255,0),newcolor = RGB(255,0,0);void CSaoMiaoView:ScanLineFill4(int x,int y,COLORREF oldcolor,COLORREF newcolor)int xl,xr,i;CClientDC dc(this);HDC hdc = dc.GetSafeHdc();bool spanNeedFill;Seed pt;m_LinkStack.SetEmpty();pt.x = x;pt.y = y;m_

8、LinkStack.push(pt);while(!m_LinkStack.IsEmpty()m_LinkStack.pop(pt);y = pt.y;x = pt.x;while(:GetPixel(hdc,x,y) = oldcolor)SetPixel(hdc,x,y,newcolor);x+;xr = x-1;x = pt.x-1;while(:GetPixel(hdc,x,y) = oldcolor)SetPixel(hdc,x,y,newcolor);x-;xl = x+1;x = xl;y = y+1;while(xxr)spanNeedFill=FALSE;while(:Get

9、Pixel(hdc,x,y)=oldcolor)spanNeedFill = TRUE;x+;if(spanNeedFill)pt.x = x-1;pt.y = y;m_LinkStack.push(pt);spanNeedFill = FALSE;while(:GetPixel(hdc,x,y)!=oldcolor & xxr)x+;x = xl;y = y-2;while(xxr)spanNeedFill =FALSE;while(:GetPixel(hdc,x,y)=oldcolor)spanNeedFill = TRUE;x+;if(spanNeedFill)pt.x = x-1;pt.y = y;m_LinkStack.push(pt);spanNeedFill = FALSE;while(:GetPixel(hdc,x,y)!

溫馨提示

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

評論

0/150

提交評論