- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6绘图
实验六 绘图
一、实验目的
1、掌握在窗口绘图的基本方法;
2、掌握各种绘图工具的使用方法;
3、掌握图形文件在窗口内显示的方法。
二、实验要求
1、创建单文档窗口,当鼠标在窗口中移动并按下左键时画图,左键弹起时停止。用鼠标在屏幕上选择一个区域,(按下左键开始,弹起左键时结束)并在该区域中填充不同的颜色鼠标在窗口内移动时,在屏幕的左上角开辟一方块显示鼠标位置的显示内容,利用菜单弹出对话窗口输入要显示的大小。在单文档背景中装入位图文件,要求分别显示不同的位图。1 首先创建单文档工程,如下图:
为此单文档工程的菜单添加四个选项分别对应实验六的四部分内容,由菜单选择相应实验内容,添加全局变量int m_drawtype保存所选择的实验内容。
3.2 第一部分 ── 鼠标绘图:
3.2.1 为实验六View添加成员变量:
BOOL m_bdownup; //保存鼠标是否按下
CPoint m_pstart; //鼠标的起始坐标
3.2.2 利用ClassWizard为实验六View添加关于鼠标消息的三个成员函数(如右图):
WM_LBUTTONDOWN //左键按下
WM_LBUTTONUP //左键弹起
WM_MOUSEMOVE //鼠标移动
当左键按下同时在窗口内拖动时,用SetCapture()命令捕捉鼠标消息即当鼠标移用户激活窗口外仍然将鼠标移动消息发窗ReleaseCapture()取消捕捉鼠标消息。2.3 选择自定义画笔,格式:
CClientDC dc(this);
CPen hPen(PS_SOLID,5,RGB(0,0,255));
//创建新画笔(实线、宽度5像素、蓝色)
CPen* pOldPen = dc.SelectObject(hPen);
//保存原始画笔并使用新画笔
在自定义画笔使用完毕后记得恢复原始画笔。
3.2.4 在选择好画笔后,就可以开始做图了,MFC提供具有绘图能力的类有:
CDC
CPaintDC
CClientDC
CWindowDC
CMetaFileDC
其中,CDC是其DC类的基类,CDC基类定义设备描述表的对象,利用 CDC提供的类方法实现全部的图形生成,具体能提供的服务有:使用绘图工具,管理设备描述表,选择安全类型GDI对象,控制着色和调色板,处理坐标映像和转换,加工多边形和区域,绘制形状,绘制正文,使用不同字体,处理元文件等等。void OnLButtonDown(UINT nFlags, CPoint point)
{
m_pstart = point; //保存起始鼠标位置
m_bdownup = TRUE; //开始画图
SetCapture();
CView::OnLButtonDown(nFlags, point);
}
void OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CPen hPen(PS_SOLID,5,RGB(0,0,255)); //创建新画笔(实线、宽度5像素、蓝色)
CPen* pOldPen=dc.SelectObject(hPen); //保存原始画笔并使用新画笔
CDC* pDC = GetDC();
switch(m_drawtype)
{
case 1:
if (m_bdownup)
{
dc.MoveTo(m_pstart);
dc.LineTo(point);
m_pstart = point;
} //画图
break;
case 3:
pDC-StretchBlt(0,0,m_gbwidth,m_gbheight,pDC,point.x,point.y,10,10,SRCCOPY); //部分显示
break;
default:
break;
}
dc.SelectObject(pOldPen); //恢复原始画笔
ReleaseDC(pDC);
CView::OnMouseMove(nFlags, point);
}
3.3 第二部分 ── 颜色填充:
3.3.1 首先选择自定义画刷,其方法与选择自定义画笔非常相似:
文档评论(0)