版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Vc基本對(duì)話框創(chuàng)建界面用畫筆交互繪制任意封閉區(qū)域,并可選不同顏色填充。運(yùn)用掃描線填充算法及運(yùn)用掃描線種子填充算法。運(yùn)行結(jié)果: int temp=0;int x100,y100;int a=0;int xs,ys,xe,ye;int ymax,ymin;int k; /交點(diǎn)數(shù)int h;int xd7,yd7;int m;int m_cr,m_cg,m_cb;staticint r=0;staticintg=0;staticintb=0;void CYstcDlg:OnButton1() temp=1; void CYstcDlg:OnLButtonDown(UINT nFlags, CPoin
2、t point) if(temp=0)AfxMessageBox("請(qǐng)選定所要繪制的形狀!");xa=point.x; ya=point.y; a+;xs=point.x; ys=point.y;CDialog:OnLButtonDown(nFlags, point);void CYstcDlg:OnLButtonUp(UINT nFlags, CPoint point) CDC *pDC=GetDC(); xe=point.x;ye=point.y;if(temp=1) /交互畫圓 int x0=xs; int y0=ys; int r=(int)sqrt(long do
3、uble)(xs-xe)*(xs-xe)+(ys-ye)*(ys-ye); int f,b,d,x,y; d=1-r;x=0;y=r; /r為圓的半徑 while(y>=x) for(f=-m;f<=m;f+)for(b=-m;b<=m;b+)pDC->SetPixel (x0,y0,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (x+x0+f,y+y0+b,RGB(m_cr,m_cg,m_cb); /(x0,y0)為圓心坐標(biāo)pDC->SetPixel (-x+x0+f,y+y0+b,RGB(m_cr,m_cg,m_cb);pDC-&g
4、t;SetPixel (-x+x0+f,-y+y0+b,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (x+x0+f,-y+y0+b,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (y+x0+f,x+y0+b,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (-y+x0+f,x+y0+b,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (-y+x0+f,-x+y0+b,RGB(m_cr,m_cg,m_cb);pDC->SetPixel (y+x0+f,-x+y0+b,RGB(m_c
5、r,m_cg,m_cb);x=x+1;if(d<0)d=d+2*x+3;elsed=d+2*(x-y)+5,y-; else if (temp=2) /交互畫多邊形int top=0; xa=x0; ya=y0; pDC->MoveTo (x0,y0);for (int i=1;i<=a-1;i+) pDC->LineTo(xi,yi);CDialog:OnLButtonUp(nFlags, point);void CYstcDlg:OnChangeEdit1() UpdateData(true);void CYstcDlg:OnChangeEdit2() Update
6、Data(true);void CYstcDlg:OnChangeEdit3() UpdateData(true);void CYstcDlg:OnButton2() temp=2;void CYstcDlg:OnButton3() CDC *pDC=GetDC(); CString strr;CString strg;CString strb;GetDlgItem(IDC_EDIT1)->GetWindowText(strr);GetDlgItem(IDC_EDIT2)->GetWindowText(strg);GetDlgItem(IDC_EDIT3)->GetWindo
7、wText(strb);r= _ttoi(strr);g=_ttoi(strg); b= _ttoi(strb);CClientDC dc(this); CPen *pOldpen;CPen pen;pen.CreatePen(PS_SOLID,5,RGB(r,g,b);temp=3;pOldpen=pDC->SelectObject(&pen);/if(temp=3) /掃描線填充/ /m_Fill=true;SelectObject(*pDC,pen); int i=0;ymin=y0;ymax=y0; /確定掃描線的范圍 for(i=1;i<6;i+) if(yi&l
8、t;ymin)ymin=yi;if(yi>ymax)ymax=yi;/ for(h=ymin;h<=ymax;h+) /掃描線填充 k=0;for(i=0;i<=5;i+)if(yi+1!=yi)if(h+0.5-yi)*(h+0.5-yi+1)<0)xdk=xi+(xi+1-xi)*(h-yi)/(yi+1-yi);ydk=h;k+;for(i=0;i<k-1;i+) /交點(diǎn)排序int t;m=i;for(int j=i+1;j<=k-1;j+)if(xdj<xdm)m=j;if(m!=i)t=xdi,xdi=xdm,xdm=t;for(i=0;i&
9、lt;=k-i;i=i+2)pDC->MoveTo(xdi,h);pDC->LineTo(xdi+1,h); DeleteObject(pen);void CYstcDlg:OnButton4() Invalidate();xs=0;ys=0;xe=0;ye=0;a=0;for(int i=0;i<a;i+)xi=0;yi=0;void CYstcDlg:OnButton5() CDialog:OnOK ();/聲明棧/int z3003;void push(int xs,int ys,long &top) top=top+1; ztop0=xs; ztop1=ys;
10、 void pop(int &xs,int &ys,long &top)xs=ztop0;ys=ztop1;top=top-1;void CYstcDlg:OnButton6() CDC*pDC=GetDC(); CString strr;CString strg;CString strb;GetDlgItem(IDC_EDIT1)->GetWindowText(strr);GetDlgItem(IDC_EDIT2)->GetWindowText(strg);GetDlgItem(IDC_EDIT3)->GetWindowText(strb);r= _
11、ttoi(strr);g=_ttoi(strg);b= _ttoi(strb);/*CClientDC dc(this); CPen *pOldpen;CPen pen;pen.CreatePen(PS_SOLID,5,RGB(r,g,b);temp=3;pOldpen=pDC->SelectObject(&pen);*/ int x0=xs; int y0=ys; long top=0; int flag,xn; push(xs,ys,top); while(top>0)pop(xs,ys,top);int x0=xs;int y0=ys;pDC->SetPixel
12、(x0,y0,RGB(r,g,b);while(pDC->GetPixel(x0+1,y0)!=RGB(0,0,0) && pDC->GetPixel(x0+1,y0)!=RGB(r,g,b)pDC->SetPixel(x0+1,y0,RGB(r,g,b);x0+;int xr=x0-1;x0=xs,y0=ys; /記錄右邊界,準(zhǔn)備向種子像素的左邊填充while(pDC->GetPixel(x0-1,y0)!=RGB(0,0,0) && pDC->GetPixel(x0-1,y0)!=RGB(r,g,b)pDC->SetPix
13、el(x0-1,y0,RGB(r,g,b);x0-;int xl=x0+1;x0=xl,y0=ys+1;while(x0<=xr)flag=0;while(pDC->GetPixel(x0,y0)!=RGB(0,0,0) && pDC->GetPixel(x0,y0)!=RGB(r,g,b) && x0<=xr )if(flag=0)flag=1;x0+;if(flag=1) /相鄰上一行有要填充的區(qū)域,新的種子像素坐標(biāo)入棧if(pDC->GetPixel(x0,y0)!=RGB(0,0,0) && x0=xr &a
14、mp;& pDC->GetPixel(x0,y0)!=RGB(r,g,b)push(x0,y0,top);elsepush(x0-1,y0,top);flag=0;int xn=x0;while(pDC->GetPixel(x0,y0)!=RGB(0,0,0) && pDC->GetPixel(x0,y0)!=RGB(r,g,b) && x0<=xr ) x0+;if(xn=x0)x0+;x0=xl;y0=ys-1; /準(zhǔn)備向相鄰下一行尋找新的種子像素坐標(biāo)入棧while(x0<=xr)flag=0;while(pDC->GetPixel(x0,y0)!=RGB(0,0,0) && pDC->GetPixel(x0,y0)!=RGB(r,g,b) && x0<=xr )if(flag=0)flag=1;x0+;if(flag=1)if(x0=xr && pDC->GetPixel(x0,y0)!=RGB(r,g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沈陽理工大學(xué)《化工過程自動(dòng)控制與儀表》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《電力拖動(dòng)直流控制系統(tǒng)》2022-2023學(xué)年期末試卷
- 光伏施工專業(yè)合同文本
- 廣州市合同制護(hù)士工資
- 航次出船合同類型
- 2024-2025學(xué)年高中數(shù)學(xué)第三章概率3.1.3概率的基本性質(zhì)課時(shí)素養(yǎng)評(píng)價(jià)含解析新人教A版必修3
- 作畫課件秋之姑娘的花裙子
- 米倉(cāng)山國(guó)家森林公園風(fēng)景資源調(diào)查與評(píng)價(jià)報(bào)告
- 中國(guó)物品編碼中心(GS1China)UDI結(jié)構(gòu)-及相關(guān)國(guó)家標(biāo)準(zhǔn)
- 2024電子產(chǎn)品委托加工合同范本
- 私募基金管理人-廉潔從業(yè)管理準(zhǔn)則
- 房地產(chǎn)估價(jià)機(jī)構(gòu)內(nèi)部管理制度
- 藝術(shù)哲學(xué):美是如何誕生的學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 廣西科普傳播中心招考高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024年重慶市高考地理真題(解析版)
- 建立校園欺凌案發(fā)與處理的記錄系統(tǒng)
- 案例一動(dòng)植物細(xì)胞模型制作課件人教版生物七年級(jí)上冊(cè)
- 2024下半年江蘇無錫市屬國(guó)企業(yè)招聘111人高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024年安徽省地勘行業(yè)職業(yè)技能大賽(地質(zhì)調(diào)查員)考試題庫(kù)(含答案)
- 解讀國(guó)有企業(yè)管理人員處分條例課件
- 九年級(jí)上冊(cè)第三單元道德與法治《文明與家園》單元整體教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論