C++面向对象简易图形编辑器要点_第1页
C++面向对象简易图形编辑器要点_第2页
C++面向对象简易图形编辑器要点_第3页
C++面向对象简易图形编辑器要点_第4页
C++面向对象简易图形编辑器要点_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象编程技术实验五实验报告班级:学号:姓名:时间:2013-12-011实验要求1A、基本功能要求1B、高级要求12实验过程及结果12.1 交互式绘制图形12.2 绘制直线12.3 绘制矩形22.4 绘制椭圆32.5 输入文本42.6 文本保存62.7 文本读取73实验总结8附录关键代码8一、主CPP8二、附CPP22三、头文件281实验要求A、基本功能要求1 .交互式绘制图形(至少包括线、矩形和文本),绘制完成的图形能够正确地重现2 .绘制结果可以正确持久化(存储到文件、从文件中读出)3 .最终交付的工程中至少包含两个源文件(.cpp文件,即除主程序外,将部分函数分离到单独的源文件卜一个

2、rc文件B、高级要求用“椭圆”1 .线、矩形、文本的颜色(线色和填充色)、文本字体可调。绘制2 .能够通过鼠标点击选中图形,并进行属性的修改,修改的内容可包括:位置大小颜色线型字体(对应文本图元而言)3 .能够删除选中的图形2实验过程及结果2.1 交互式绘制图形此次绘制图形的程序和例程中EasyDraw不同,相比后者,本程序的绘制是建立在结构体数组的基础上的。绘制结果完全可以满足实验要求。效果图如下:2.2 绘制直线首先定义一个直线的结构体数组structMySaveLine/直线保存POINTptS;POINTptE;COLORREFcolor;intpenWidth;intpenStyle

3、;绘制直线的函数如下:voidDrawMyLine(HDChdc)/绘制直线HPENhPen;HPENhPenOld;intj;for(j=0;j<MAX;j+)hPen=CreatePen(SaveLinej.penStyle,SaveLinej.penWidth,SaveLinej.color);hPenOld=(HPEN)SelectObject(hdc,hPen);MoveToEx(hdc,SaveLinej.ptS.x,SaveLinej.ptS.y,NULL);LineTo(hdc,SaveLinej.ptE.x,SaveLinej.ptE.y);SelectObject(h

4、dc,hPenOld);DeleteObject(hPen);2.3 绘制矩形首先定义一个矩形的结构体数组structMySaveRectangle/矩形保存POINTptS;POINTptE;COLORREFcolor;HBRUSHhNewBrush;intbrushColor;intpenWidth;intpenStyle;绘制矩形的函数如下:voidDrawMyRectangle(HDChdc)/绘制矩形intj;HBRUSHhOldBrush;HPENhPen;HPENhPenOld;for(j=0;j<MAX;j+)hPen=CreatePen(SaveRectanglej.p

5、enStyle,SaveRectanglej.penWidth,SaveRectanglej.color);hPenOld=(HPEN)SelectObject(hdc,hPen);switch(pDrawData->iSelectionBrush)caseIDM_BRUSH_WHITE:caseIDM_BRUSH_LTGRAY:hOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(SaveRectanglej.brushColor);break;caseIDM_BRUSH_COLORSOLID:caseIDM_BRUSH_CROSS:hOl

6、dBrush=(HBRUSH)SelectObject(hdc,SaveRectanglej.hNewBrush);break;Rectangle(hdc,SaveRectanglej.ptS.x,SaveRectanglej.ptS.y,SaveRectanglej.ptE.x,SaveRectanglej.ptE.y);SelectObject(hdc,hPenOld);DeleteObject(hPen);SelectObject(hdc,hOldBrush);2.4 绘制椭圆首先定义一个椭圆的结构体数组structMySaveEllipse/椭圆保存POINTptS;POINTptE;

7、COLORREFcolor;HBRUSHhNewBrush;intbrushColor;intpenWidth;intpenStyle;绘制椭圆的函数如下:voidDrawMyEllipse(HDChdc)/绘制椭圆intj;HBRUSHhOldBrush;HPENhPen;HPENhPenOld;for(j=0;j<MAX;j+)hPen=CreatePen(SaveEllipsej.penStyle,SaveEllipsej.penWidth,SaveEllipsej.color);hPenOld=(HPEN)SelectObject(hdc,hPen);switch(pDrawDa

8、ta->iSelectionBrush)caseIDM_BRUSH_WHITE:caseIDM_BRUSH_LTGRAY:hOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(SaveEllipsej.brushColor)break;caseIDM_BRUSH_COLORSOLID:caseIDM_BRUSH_CROSS:hOldBrush=(HBRUSH)SelectObject(hdc,SaveEllipsej.hNewBrush);break;Ellipse(hdc,SaveEllipsej.ptS.x,SaveEllipsej.pt

9、S.y,SaveEllipsej.ptE.x,SaveEllipsej.ptE.y);SelectObject(hdc,hPenOld);DeleteObject(hPen);SelectObject(hdc,hOldBrush);2.5 输入文本输入文本前可以选择文本的字体、颜色,然后点击鼠标左键在该处输入文本。先定义一个文本的结构体数组structMySaveText/文本保存POINTpt;charg_EditInput1024;COLORREFcrText;HFONThFont;选择字体的函数如下:voidChooseFont(HWNDhwnd)staticLOGFONTlogfont

10、;staticCHOOSEFONTcf;staticHFONThFont;GetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),cf.lStructSize=sizeof(CHOOSEFONT);cf.hwndOwner=hwnd;cf.hDC=NULL;cf.lpLogFont=&logfont;cf.iPointSize=0;cf.Flags=CF_INITTOLOGFONTSTRUCT|CF_SCREENFONTS|(PTSTR) &logfont);初始化结构logfontCF_EFFECTS;cf.rgbColor

11、s=0;cf.lCustData=0;cf.lpfnHook=NULL;cf.lpTemplateName=NULL;cf.hInstance=NULL;cf.lpszStyle=NULL;cf.nFontType=0;cf.nSizeMin=0;cf.nSizeMax=0;if(ChooseFont(&cf)if(SaveTextq.hFont)DeleteObject(SaveTextq.hFont);SaveTextq.hFont=CreateFontIndirect(&logfont);InvalidateRect(hwnd,NULL,TRUE);选择颜色的函数如下:v

12、oidChooseColor(HWNDhwnd)crCustomC010rs16;crText = RGB (0, 0, 0);staticCHOOSECOLORcc;staticCOLORREFstaticCOLORREF初始化结构cccc.lStructSize cc.hwndOwner cc.hInstance cc.rgbResult cc.lpCustC010rs cc.Flags cc.lCustData cc.lpfnHook=sizeof(CHOOSECOLOR);=hwnd;=NULL;=RGB(0,0,0);=crCustomColors;=CC_RGBINIT|CC_FU

13、LLOPEN;=0;=NULL;cc.lpTemplateName=NULL;if(ChooseColor(&cc)SaveTextq.crText=crCustomColors0;InvalidateRect(hwnd,NULL,TRUE);输出函数的文本如下:voidDrawMyText(HDChdc)intj;for(j=0;j<MAX;j+)if(SaveTextj.hFont)SelectObject(hdc,SaveTextj.hFont);/选用逻辑字体SetTextColor(hdc,SaveTextj.crText);TextOut(hdc,SaveTextj.

14、pt.x,SaveTextj.pt.y,SaveTextj.g_EditInput,strlen(SaveTextj.g_EditInput);SelectObject(hdc,GetStockObject(SYSTEM_FONT);/还原逻辑字体.2.6 文本保存代码如下voidSaveMyData(structMySaveLine*SaveLine,intLineCount,structMySaveRectangle*SaveRectangle,intRectangleCount,structMySaveEllipse*SaveEllipse,intEllipseCount,structM

15、ySaveText*SaveText,intTextCount)staticHANDLEhFile;hFile=CreateFile("e:abc.f",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);if(hFile!=INVALID_HANDLE_VALUE)DWORDdwByte1=0;DWORDdwByte2=0;DWORDdwByte3=0;DWORDdwByte4=0;WriteFile(hFile,&LineCount,sizeof(int),&dwByte1,NULL);WriteFile(hFile,&

16、amp;RectangleCount,sizeof(int),&dwByte2,NULL);WriteFile(hFile,&EllipseCount,sizeof(int),&dwByte3,NULL);WriteFile(hFile,&TextCount,sizeof(int),&dwByte4,NULL);WriteFile(hFile,SaveLine,LineCount*sizeof(MySaveLine),&dwByte1,NULL);WriteFile(hFile,SaveRectangle,RectangleCount*sizeo

17、f(MySaveRectangle),&dwByte2,NULL);WriteFile(hFile,SaveEllipse,EllipseCount*sizeof(MySaveEllipse),&dwByte3,NULL);WriteFile(hFile,SaveText,TextCount*sizeof(MySaveText),&dwByte4,NULL);CloseHandle(hFile);2.7 文本读取代码如下:voidLoadMyData(structMySaveLine*SaveLine,intLineCount,structMySaveRectangle

18、*SaveRectangle,intRectangleCount,structMySaveEllipse*SaveEllipse,intEllipseCount,structMySaveText*SaveText,intTextCount)staticHANDLEhFile;hFile=CreateFile("e:abc.f",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);if(hFile!=INVALID_HANDLE_VALUE)DWORDdwByte1=0;DWORDdwByte2=0;DWORDdwB

19、yte3=0;DWORDdwByte4=0;ReadFile(hFile,&LineCount,sizeof(int),&dwByte1,NULL);ReadFile(hFile,&RectangleCount,sizeof(int),&dwByte2,NULL);ReadFile(hFile,&EllipseCount,sizeof(int),&dwByte3,NULL);ReadFile(hFile,&TextCount,sizeof(int),&dwByte4,NULL);ReadFile(hFile,SaveLine,Li

20、neCount*sizeof(MySaveLine),&dwByte1,NULL);ReadFile(hFile,SaveRectangle,RectangleCount*sizeof(MySaveRectangle),&dwByte2,NULL);ReadFile(hFile,SaveEllipse,EllipseCount*sizeof(MySaveEllipse),&dwByte3,NULL);ReadFile(hFile,SaveText,TextCount*sizeof(MySaveText),&dwByte4,NULL);CloseHandle(hF

21、ile);3实验总结本实验最大的特点是使用结构体数组,这也是我第一次使用结构体数组,从不使用结构体到使用结构体指针最后升级到结构体数组是一个循序渐进的过程,在这个过程中我越来越感觉到结构体在管理数据方面的优势。我的感觉是在主CPP文件中代码应该是越少越好,很多地方只要调用函数就可以了,然后在另外的CPP中写函数。这样的程序给人的感觉是分层做的比较好,调理比较清晰。附录关键代码一、主CPP/*程序:Paint文件:Paint.cpp功能:简易的图像编辑器*/#include"draw.h"#defineMAX100TCHARszAppName口;structMySaveLin

22、eSaveLineMAX;structMySaveRectangleSaveRectangleMAX;structMySaveEllipseSaveEllipseMAX;structMySaveTextSaveTextMAX;intlineCount;intrectangleCount;intellipseCount;inttextCount;DRAWDATA*pDrawData;HACCELhAccel;HDChdc;inti,m,n,p,q;BOOLInitWindow(HINSTANCEhInstance,intnCmdShow);LRESULTCALLBACKWinProc(HWNDh

23、Wnd,UINTmessage,WPARAMwParam,LPARAMlParam);/*函数:WinMain()功能:Win32应用程序入口函数。创建主窗口,处理消息循环*/intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)当前实例句柄前一个实例句柄/命令行字符/窗口显示方式MSGmsg;char*p;创建主窗口if(!InitWindow(hInstance,iCmdShow)returnFALSE;p=0;/进入消息循环:从该应用程序的消息队列中检取消息,/送到消息处理

24、过程,当检取到WM_QUIT消息时,退出消息循环。while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);DispatchMessage(&msg);returnmsg.wParam;/*函数:InitWindow()功能:创建窗口。*/staticBOOLInitWindow(HINSTANCEhInstance,intiCmdShow)HWNDhwnd;窗口句柄WNDCLASSwcMainWnd;窗口类结构ATOMa;填充窗口类结构wcMainWnd.style=CS_VREDRAW|CS_HREDRAW;wcMa

25、inWnd.lpfnWndProc=WinProc;wcMainWnd.cbClsExtra=0;wcMainWnd.cbWndExtra=0;wcMainWnd.hInstance=hInstance;wcMainWnd.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1);wcMainWnd.hCursor=LoadCursor(NULL,IDC_ARROW);wcMainWnd.hbrBackground=(structHBRUSH_*)GetStockObject(WHITE_BRUSH);wcMainWnd.lpszMenuName=

26、(LPSTR)IDR_MENU1;wcMainWnd.lpszClassName=szAppName;LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1);hAccel=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1);注册窗口类a=RegisterClass(&wcMainWnd);if(!a)MessageBox(NULL,TEXT("注册窗口类失败!"),szAppName,MB_ICONERROR);return0;创建

27、主窗口窗口类名称hwnd=CreateWindow(szAppName,窗口风格窗口位置的x坐标窗口位置的y坐标窗口的宽度窗口的高度父窗口句柄菜单句柄应用程序实例句柄窗口创建数据指针TEXT("简易的图形编辑器作者:娄通)窗口标题WS_OVERLAPPEDWINDOW,200,200,800,450,NULL,NULL,hInstance,NULL);if(!hwnd)returnFALSE;显示并更新窗口ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);returnTRUE;/*函数:WinProc()功能:处理主窗口消息*/LRESULTC

28、ALLBACKWinProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMIParam)PAINTSTRUCTps;RECTrect;HMENUhMenu;bDrawing=FALSE,Line=FALSE,staticBOOLRectangle=FALSE,Ellipse=FALSE,Text=FALSE;staticHMENUhPopMenu;POINTpt;inthNewPenStyle,hNewPenWidth;intBrushColor;COLORREFhNewPenColor;staticintx,y;staticchara100;HBRUSHh

29、NewBrush;staticintk=1;staticHWNDhWndEdit;static LOGFONT static CHOOSEFONT static HFONTstatic CHOOSECOLOR static COLORREF static COLORREF static HANDLE switch (message) logfont;cf;hFont;cc;crCustomC010rs16;crText = RGB (0, 0, 0);hFile;caseWMCREATE:创建消息pDrawData=newDRAWDATA;pDrawData->iSelectionFun

30、c=IDM_FUNC_LINETO;pDrawData->iSelectionPenColor=IDM_PEN_BLACK;pDrawData->iSelectionPenStyle=IDM_PEN_SOLID;pDrawData->iSelectionPenWidth=IDM_PEN_WIDTH1;if(pDrawData)SetWindowLong(hWnd,0,(LONG)pDrawData);初始化结构cfGetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),(PTSTR)&logfont);初始化结构lo

31、gfontcf.lStructSize=sizeof(CHOOSEFONT);cf.hwndOwner=hWnd;cf.hDC=NULL;cf.lpLogFont=&logfont;cf.iPointSize=:0;cf.Flags=CF_INITTOLOGFONTSTRUCTCF_EFFECTS;cf.rgbColors=0;cf.lCustData=0;cf.lpfnHook=NULL;cf.lpTemplateName=NULL;cf.hInstance=NULL;cf.lpszStyle=NULL;cf.nFontType=0;cf.nSizeMin=0;cf.nSizeMax

32、=0;初始化结构cccc.lStructSize=:sizeof(CHOOSECOLOR);cc.hwndOwner=hWnd;cc.hInstance=NULL;cc.rgbResult=RGB(0,0,0);cc.lpCustColors=crCustomColors;cc.Flags=CC_RGBINIT|CC_FULLOPEN;cc.lCustData=0;cc.lpfnHook=NULL;|CF_SCREENFONTS|cc.lpTemplateName=NULL;/显不'窗口标题hPopMenu=LoadMenu(LPCREATESTRUCT)lParam)->hIn

33、stance,MAKEINTRESOURCE(IDR_MENU1);hPopMenu=GetSubMenu(hPopMenu,2);return0;caseWM_COMMAND:hMenu=GetMenu(hWnd);switch(LOWORD(wParam)caseIDM_FILE_EXIT:SendMessage(hWnd,WM_CLOSE,0,0);return0;caseIDM_FILE_SAVE:SaveMyData(SaveLine,lineCount,SaveRectangle,rectangleCount,SaveEllipse,ellipseCount,SaveText,te

34、xtCount);InvalidateRect(hWnd,NULL,TRUE);return0;caseIDM_FILE_OPEN:LoadMyData(SaveLine,lineCount,SaveRectangle,rectangleCount,SaveEllipse,ellipseCount,SaveText,textCount);InvalidateRect(hWnd,NULL,TRUE);return0;caseIDM_FUNC_ELLIPSE:CheckMenuItem(hMenu,pDrawData->iSelectionFunc,MF_UNCHECKED);pDrawDa

35、ta->iSelectionFunc=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionFunc,MF_CHECKED);Line=FALSE;Rectangle=FALSE;Ellipse=TRUE;Text=FALSE;return0;caseIDM_FUNC_RECTANGLE:CheckMenuItem(hMenu,pDrawData->iSelectionFunc,MF_UNCHECKED);pDrawData->iSelectionFunc=LOWORD(wParam);CheckMenuItem

36、(hMenu,pDrawData->iSelectionFunc,MF_CHECKED);Line=FALSE;Rectangle=TRUE;Ellipse=FALSE;Text=FALSE;return0;caseIDM_FUNC_LINETO:CheckMenuItem(hMenu,pDrawData->iSelectionFunc,MF_UNCHECKED);pDrawData->iSelectionFunc=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionFunc,MF_CHECKED);Line=

37、TRUE;Rectangle=FALSE;Ellipse=FALSE;Text=FALSE;return0;caseIDM_TEXT_INPUT:Text=TRUE;Line=FALSE;Rectangle=FALSE;Ellipse=FALSE;InvalidateRect(hWnd,NULL,FALSE);return0;caseIDM_TEXT_FONT:ChooseFont(hWnd);return0;caseIDM_TEXT_COLOR:ChooseColor(hWnd);return0;caseIDM_PEN_BLACK:caseIDM_PEN_RED:caseIDM_PEN_BL

38、UE:CheckMenuItem(hMenu,pDrawData->iSelectionPenColor,MF_UNCHECKED);pDrawData->iSelectionPenColor=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionPenColor,MF_CHECKED);InvalidateRect(hWnd,NULL,TRUE);return0;caseIDM_PEN_SOLID:caseIDM_PEN_DASHDOT:CheckMenuItem(hMenu,pDrawData->iSelec

39、tionPenStyle,MF_UNCHECKED);pDrawData->iSelectionPenStyle=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionPenStyle,MF_CHECKED);InvalidateRect(hWnd,NULL,TRUE);return0;caseIDM_PEN_WIDTH1:caseIDM_PEN_WIDTH2:caseIDM_PEN_WIDTH3:CheckMenuItem(hMenu,pDrawData->iSelectionPenWidth,MF_UNCHECKE

40、D);pDrawData->iSelectionPenWidth=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionPenWidth,MF_CHECKED);InvalidateRect(hWnd,NULL,TRUE);return0;caseIDM_BRUSH_WHITE:caseIDM_BRUSH_LTGRAY:caseIDM_BRUSH_COLORSOLID:caseIDM_BRUSH_CROSS:CheckMenuItem(hMenu,pDrawData->iSelectionBrush,MF_UNCHEC

41、KED);pDrawData->iSelectionBrush=LOWORD(wParam);CheckMenuItem(hMenu,pDrawData->iSelectionBrush,MF_CHECKED);return0;return0;caseWM_RBUTTONDOWN:/鼠标消息if(LOWORD(lParam)>240)&&(LOWORD(lParam)<480)&&(HIWORD(lParam)>120)&&(HIWORD(lParam)<150)if(ChooseFont(&cf)if

42、(hFont)DeleteObject(hFont);hFont=CreateFontIndirect(&logfont);InvalidateRect(hWnd,NULL,TRUE);elsept.x=LOWORD(lParam);pt.y=HIWORD(lParam);ClientToScreen(hWnd,&pt);TrackPopupMenu(hPopMenu,TPM_LEFTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON,pt.x,pt.y,0,hWnd,NULL);return0;caseWM_LBUTTONDOWN:if(!bDrawing)S

43、etCapture(hWnd);if(Line)设置绘图的起始、终止点SaveLinei.ptS.x=LOWORD(IParam);SaveLinei.ptS.y=HIWORD(lParam);SaveLinei.ptE.x=LOWORD(lParam);SaveLinei.ptE.y=HIWORD(lParam);if(Rectangle)SaveRectanglem.ptS.x=LOWORD(lParam);SaveRectanglem.ptS.y=HIWORD(lParam);SaveRectanglem.ptE.x=LOWORD(lParam);SaveRectanglem.ptE.y

44、=HIWORD(lParam);if(Ellipse)SaveEllipsen.ptS.x=LOWORD(lParam);SaveEllipsen.ptS.y=HIWORD(lParam);SaveEllipsen.ptE.x=LOWORD(lParam);SaveEllipsen.ptE.y=HIWORD(lParam);if(Text)SaveTextq.pt.x=LOWORD(lParam);SaveTextq.pt.y=HIWORD(lParam);if(LOWORD(lParam)>240)&&(LOWORD(lParam)<480)&&(

45、HIWORD(lParam)>120)&&(HIWORD(lParam)<150)if(ChooseColor(&cc)crText=crCustomColors0;InvalidateRect(hWnd,NULL,TRUE);elseif(Text)if(DialogBox(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG1),hWnd,InputDlgProc)=IDOK)DrawMyText(hdc);q+;textCount+;x=GET_X_LPARAM(l

46、Param);y=GET_Y_LPARAM(lParam);wsprintf(a,"鼠标位置x=%d,y=%d",x,y);DrawText(hdc,a,-1,&rect,DT_RIGHT);DrawText(hdc,TEXT("请在空白处单击鼠标左键输入文本"),-1,&rect,DT_RIGHT|DT_BOTTOM);InvalidateRect(hWnd,NULL,FALSE);bDrawing=TRUE;return0;caseWM_LBUTTONUP:if(bDrawing)SetCapture(NULL);if(Line)Sa

47、veLinei.ptE.x=(short)LOWORD(lParam);SaveLinei+.ptE.y=(short)HIWORD(lParam);lineCount+;if(Rectangle)SaveRectanglem.ptE.x=(short)LOWORD(lParam);SaveRectanglem+.ptE.y=(short)HIWORD(lParam);rectangleCount+;if(Ellipse)SaveEllipsen.ptE.x=(short)LOWORD(lParam);SaveEllipsen+.ptE.y=(short)HIWORD(lParam);elli

48、pseCount+;bDrawing=FALSE;return0;caseWM_MOUSEMOVE:if(!bDrawing)return0;hdc=GetDC(hWnd);switch(pDrawData->iSelectionPenColor)caseIDM_PEN_BLACK:hNewPenColor=RGB(0,0,0);break;caseIDM_PEN_RED:hNewPenColor=RGB(255,0,0);break;caseIDM_PEN_BLUE:hNewPenColor=RGB(0,0,255);break;switch(pDrawData->iSelect

49、ionPenStyle)caseIDM_PEN_SOLID:hNewPenStyle=PS_SOLID;break;caseIDM_PEN_DASHDOT:hNewPenStyle=PS_DASHDOT;break;switch(pDrawData->iSelectionPenWidth)caseIDM_PEN_WIDTH1:hNewPenWidth=1;break;caseIDM_PEN_WIDTH2:hNewPenWidth=2;break;caseIDM_PEN_WIDTH3:hNewPenWidth=3;break;switch(pDrawData->iSelectionB

50、rush)caseIDM_BRUSH_WHITE:BrushColor=WHITE_BRUSH;break;caseIDM_BRUSH_LTGRAY:BrushColor=LTGRAY_BRUSH;break;caseIDM_BRUSH_COLORSOLID:创建并选择彩色实体画刷hNewBrush=(HBRUSH)CreateSolidBrush(RGB(0,255,255);break;caseIDM_BRUSH_CROSS:创建并选择绿色十字影线画刷hNewBrush=CreateHatchBrush(HS_CROSS,RGB(0,255,0);break;if(Line)SaveLin

51、ei.penStyle=hNewPenStyle;SaveLinei.penWidth=hNewPenWidth;SaveLinei.color=hNewPenColor;if(Rectangle)SaveRectanglem.penStyle=hNewPenStyle;SaveRectanglem.penWidth=hNewPenWidth;SaveRectanglem.color=hNewPenColor;SaveRectanglem.brushColor=BrushColor;SaveRectanglem.hNewBrush=hNewBrush;if(Ellipse)SaveEllips

52、en.penStyle=hNewPenStyle;SaveEllipsen.penWidth=hNewPenWidth;SaveEllipsen.color=hNewPenColor;SaveEllipsen.brushColor=BrushColor;SaveEllipsen.hNewBrush=hNewBrush;清除原绘图轨迹SetROP2(hdc,R2_WHITE);switch(pDrawData->iSelectionFunc)caseIDM_FUNC_LINETO:DrawMyLine(hdc);break;caseIDM_FUNC_RECTANGLE:DrawMyRect

53、angle(hdc);break;caseIDM_FUNC_ELLIPSE:DrawMyEllipse(hdc);break;if(Line)SaveLinei.ptE.x=(short)LOWORD(IParam);SaveLinei.ptE.y=(short)HIWORD(lParam);if(Rectangle)SaveRectanglem.ptE.x=(short)LOWORD(lParam);SaveRectanglem.ptE.y=(short)HIWORD(lParam);if(Ellipse)SaveEllipsen.ptE.x=(short)LOWORD(lParam);SaveEllipsen.ptE.y=(short)HIWORD(lP

温馨提示

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

评论

0/150

提交评论