直线的扫描转换_第1页
直线的扫描转换_第2页
直线的扫描转换_第3页
直线的扫描转换_第4页
直线的扫描转换_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、宁夏师范学院数学与计算机科学学院计算机图形学实验报告实验序号:2实验项目名称:直线的扫描转换3专业、班级实验地点指导教师时间2017-03-20、实验目的:学会使用MFC能够运用直线的三种扫描算法即数值微分算法(DDA算法)、中点 画线算法和Bresenham画线算法绘制直线,并熟悉掌握制作过程。二、实验环境:Win dows 7VC+ 6.0三、实验内容:打开VC6.0,点击新建一 工程一MFC AppWizard exe,创建项目名称(随便写),确定位置,然后点击确定。Files Prujccis | Warkspaccs | Other DucurnentsPrujcct uaiiic:

2、呻Location:赫 Create new works pace广 Md to Tu-rmit wiJiitkrp ,-cc 厂 rfprfiid-MCv Gif:CKCancel选择创建的应用类型一 单文档一 完成MFC AppWizard - Step 1ITnh Vi* *jjMpy Whal type of application would you like to create?Single documentMultiple documentsDialog basedDocument/View architecture suppoil?Whal language would you

3、 like your resources in?中文简体,中国1 (APPWZCHS.DLLlFinishCancel点击确定。Project Inforn dttoriUKAppWiTflrrI willa rtrw i-krlrtnn prAjm with ihr tnllnwiing nritientinni:DDA算法:添加成员函数:1.展开 wdx classes- 右击 CWdxView 选择 Add Member Funtion (添加成员函数) 函数类型定义为void,函数描述为:DDAline 点击确定2.展开 wdx classes-CWdxView 在 DDAline (

4、)函数里添加形参 int xO,int yO,int x1,i nt y1,i nt color,CCIie ntDC & de|cWibeViFiMF J| Allm* Hl Liu 阖 j * UDAJilic-圉 hfdx uldEErstf.宦li.F CboutDIq * * C MaEiiFrjiniti CWdKApp LWOkDOC* IV/dxViinw AbHcrtVdlHlU 律 CWIxVIewfl jeWdgewQ ainminuii nmTifiCniiirip .Grtn noj rn rnl|-OnBcqinninli OnDruwCDC* V* OnEndrt

5、lntin 沁 OnFcpflrel Vii HtcCmtcWin H _jG(uhalsuairt CunKtliu:pk片* dr) ranstCUM: :I1UHpdc;CkdKifoc* CMMUlewiiGttDocuntnn) / non-debug ucrclon is InlineASSFRT(n pnnf:unnt- sHindDf (UUHF J MF Cl ASRUIxDnc ) j ); p-ptm-n 4CHriHD(n;*Jn_pPncunpnt;ftuHf ftfintff Uli ftnnniHfnfifttfnatff naif ftf nit fnnifHf

6、f CUdxLileu nesaaqe h刁ndLermuoid GiOxUleu: :OlAilnc3.双击 CWdxView,在public中添加代码:* AuyHr(VullilJ 奔 CWdxVitwtj* CWdxVitwIl 中 nmAllnrpritxtl* DDAIIneO4 DumpCDump* GetDocumcntl A無 DnUeginPrinti4 DnUrBwfLLJL 玛 DnFndPrIinnnr X Oiirii;piircrii* iPittCirail;wilt 更 UGlobahvoid CWdxView:DDAIi ne(i nt x0,i nt yO

7、,i nt x1,i nt y1,i nt color,CClie ntDC & dc);记住最后加分号Bit _MSU_ULH luuaprdgi讣 unevIh-ndlr JfidJIFrt ? IPAfIpldss CUdMUieu ; pubLlu CUlukr卩rntiirtpd: / erpt*# fr&n E CLfifl E_O?HCn ErtTE (ClfdxillFu)f( PttrilHjtVE public;cifOKKrc GetDacunenru :Dpmrdtiuiu puhUr:untd Clflxiri PM: :pDAlinppnr x I9,int yOl

8、nt x1 ,i nt ,tnt colnr ,CClienrDC K He);/ OvurF丄df4.展开CWdxView 双击On Draw添加代码:CClie ntDC dc(this);DDAl in e(8,12,20,25,RGB(255,145,200),dc);三: CWdxView4 AsacrtValidQ 曲 CWdxViewO电 CV*dxVicwO* nDAIinpintxf t DDIincQ4 nurTipCniJin卩 电 etDuLuiiieiil| 騎 OnRegmPrinti|OriDraCD 伽 OnEndPrintirc 御 OnReparePrli

9、卩 recreate Wil I+ CjGlobalsCWriJf(JiPU::rUrlKUiPuC )BOOL CWdKUiew: ;PreCr eDnc - CetOncunpntO: flSSERT_UftLlI(pDoc);CClientDC dc(this);/ TODl: add draw cade Mr natiue dat here5.双击DDAIine,在函数体内编写如下代码:并调试程序 void CWdxView:DDAIi ne(i nt x0,i nt yO,i nt x1, int y1,i nt color,CCIie ntDC & de)CPen new pen(

10、P S_SOLID,1,color);dc.SelectObject (&newpen);int x,dx,dy,y,k;dx=x1-x0;dy=y1-y0;k=dy/dx;y=y0;for(x=x0;xv=x1;x+)dc.Set Pixel(x,i nt(y+0.5),color);y=y+k;tlDOAJmrl.UuinpCUump GclOooumcnH 9* OnbcginRinti OnDrswICDC * 绐 OnEiidPrliillhLOBPiitptiicPrii PirrCrrfttrWiftI LJ GInb/ilsinifntfiifniin/fiffnfnfinff

11、Uin/tiiiniffiffjffi/Hi/fnfnffnftJfif ff ChltlxUleuf nessdQD luridLLr!uulil CUdxUiiPH: :ODAlliiv(liiL xO,inLx1 ,iiit yllnt uulur ,CCllviit C 6i ilc)nPPd npwpHii(P_5ni TO, 1 ,rDi nr); dDSDiectab-lectfCJiewppn、; int K ,(lx,dlp,k;*=tlp/dx;VIFOI rnr)(*KB;K运行结果:文触戸髀旧W(V)驀閒H中点画线算法:添加成员函数1.展开 wdx classes- 右

12、击 CWdxView 选择 Add Member Funtion (添加成员函数) 函数类型定义为void,函数描述为:MidpointLine 点击确定2.展开 classes-CWdxview,在 MidpointLine 函数里添加形参 int xO,int yO,int x1,inty1,i nt color,CCIie ntDC & dc=CWdxVtew 4ueertValid) 沁 CWdxViewCt CWdxViErwO DDAIincpnt xU* DDAIineQ DiimpLCUump双击On Draw添加代码:Mid poi ntLin e(20,15,259,485

13、,RGB(80,120,255), dc);I QnDrawCDC 刁 OnEndPrintinc OnPreparePri*4 PreCfcateWin I Globals/ CUdKUievf drawinguoid CUdxUleu:OnDrau(CDC* pDC)ClIdxDoc* pDoc = EetD(icuiient(); ASSERI_UALTD(pDac):CClientDC dcAlineC8,12255盹).dc);MidpointLine(20,15,259,485,RGB(80,120,255) , dc) ;|双击MidpointLine,在函数体内编写如下代码:并

14、 调试程序CPen new pen(P S_SOLID,1,color);dc.SelectObject (&newpen);int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=2*a+b;delta1=2*a;delta2=2*(a+b);x=x0;y=y0;dc.Set Pi xel(x,y,color);while(xx1)if(d0)x+;y+;d+=delta2;elsex+;d+=delta2;dc.Set Pi xel(x,y,color);hdidpalnlLinBill* MidpointLincD 仞 OnQcyinPkiniit U

15、nDrawiCOC 背 OpEodPtinlinj % On Prep arePrii PncCrcalicWIri iGluttjilsheld CUJxUiett::HidpolntliPeC ft dt)I鲨口CPm i|t*ipHniP5_$DI TD, Lcvlnr- de =2】FCt flhiJ*C I- ;iiit41 pdpH d? ,1/;N=卯一 y1;ii=3ti-)d n; d=2*J+b;dlLj2 = 2*(d+lt);StJtd; 护艸; 4C.SttPlMl4 KltC010r); vniiF(xMi)iffdliuijr - 0 rrurCE, 0 vjrn

16、in右击 CWdxView 选择 Add Member Funtion,函数类型定义为 void,函数描述为:Bresenham_Line 点击确定Add MemberFunctionFunction Type: voidFunction Declaration:Breeenham Une|r Accessa PublicC ProtectedC Private厂 Stall c厂 Virtual2.点击 classes-CWdxview,在 Bresenham_Line函数里添加形参 int x0,int yO,int x1,inty1,i nt color,CCIie ntDC & dca

17、 CWdxView* AuterlVahda* Brc!innh*m_l CWftxViewff* CWdxViewfl* DDAIIne|infl xfl* DDAIincD* DunipICUurn p* GelDuuinieiiUvoid LinsOvoid CUdxUliEH:Bi-eenhC Ck dic; Cwaxuiew::Bresennan_Linp(int xBant ywjnt kiyi,int color,CClieituC b dc;|4.展开CWdxView 双击On Draw添加代码:Brese nham_Li ne(65,12,600,450,RGB(20,180

18、,250), dc);OnDravCDC 喪 询 OnEndPrintirt 询 OnPreparePrii 4 PleCreateVZinI Globals)DC) uoid5.双击 Bresenham_Line在函数体内编写如下代码:并调试程序int x,y,dx,dy,e,i;dx=x1-x0;dy=y1-yO;e=-dx;x=xO;y=yO;for(i=0;iv=dx;i+)dc.Set Pi xel(x,y,color);x=x+1;e=e+2*dy;if(e=0)y=y+1;e=e-2*dx;ClfdxUieu: :OnDrau(CDC* pDC )CWdxDoc* pDoc -

19、GetDocu(ient(): ASSERT_UALID(pD0C5; CClientDC dcCthis):DDAlineQ J2,2D,2F,nGB(25?,145,200),dc);MidpaintLine(20,15,RCB(80,12 0,255 , de ):Bresenhain_Lin e( 65 ,12 ,QFtGB( 20,180,20 , de)诃血w|CLlLiWCiiEiidPrliilhii 筑 flnPrcpofcPrit rreCrrnteWin _J GIoUbIevoid CUdKVif II: :ursMihan_Li int tid,int v,lnt ki Int 目 i,inc calnr ,CU11 pntDi; b de)int X沁和Oy理*1; (Jk 二 Kl-acfl; dy.y1-可tt;e-dx; jh-hO; 帖yo:de .3etPlxel(x,!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论