第四讲 绘图与文本编程
更新时间:2023-08-26 02:53:02 阅读量: 教育文库 文档下载
Fundamentals of Computers
第四讲 绘图与文本编程
制作:刘晓翔 暨南大学珠海学院《Windows编程》 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
利用API全局函数实现画线功能void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_ptOrigin = point; CView::OnLButtonDown(nFlags, point); } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { HDC hdc; hdc = ::GetDC(m_hWnd); ::MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL); ::LineTo(hdc, point.x, point.y); ::ReleaseDC(m_hWnd, hdc); CView::OnLButtonUp(nFlags, point); } 2暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
利用CDC类实现画线功能void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { CDC* pDC = GetDC(); pDC->MoveTo(m_ptOrigin); pDC->LineTo(point); ReleaseDC(pDC); CView::OnLButtonUp(nFlags, point);
}3暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
利用CClientDC类实现画线功能CClientDC派生于CDC类,并且在构造时调用GetDC函数,在析 构时调用ReleaseDC函数。它与CDC一样,都是实现在窗口的客 户区绘图。
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { CClientDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point);CView::OnLButtonUp(nFlags, point); }制作:刘晓翔
4
暨南大学珠海学院《Windows编程》
2015-7-22
简单绘图Fundamentals of Computers
JINAN University
利用CWindowDC类实现画线功能CWindowDC派生于CDC类,并且在构造时调用GetWindowDC 函数,在析构时调用ReleaseDC函数。该对象可以访问整个窗口 区域,包括客户区与非客户区。
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { CWindowDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point);CView::OnLButtonUp(nFlags, point); }制作:刘晓翔
5
暨南大学珠海学院《Windows编程》
2015-7-22
小小知识点Fundamentals of Computers
JINAN University
窗口的客户区与非客户区MFC框架程序界面中,整个程序窗口就是框架窗口, 工具栏以下白色区域才是视类窗口。 视类窗口只有客户区(即视类窗口本身) 框架窗口既有客户区(菜单栏以下部分),还有非 客户区(标题栏和菜单栏)。 绘图操作一般都是在窗口的客户区进行的(使用CDC 或CClientDC);要在非客户区绘图,则要使用 CWindowDC。制作:刘晓翔
6
暨南大学珠海学院《Windows编程》
2015-7-22
简单绘图Fundamentals of Computers
JINAN University
在桌面上绘图void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { CWindowDC dc(NULL); //CWindowDC dc(GetDesktopWindow()); dc.MoveTo(m_ptOrigin); dc.LineTo(point); CView::OnLButtonUp(nFlags, point); }7暨南大学珠海学院《Windows编程》 制作:刘
晓翔 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
绘制彩色线条——使用CPen类CPen pen(PS_SOLID,5,RGB(255,0,0)); CClientDC dc(this); CPen* pOldPen = dc.SelectObject(&pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); dc.SelectObject(pOldPen);注意:当构造一个GDI对象后,该对象并不会立即生效,必须通 过SelectObject函数选入设备描述表,它才会在以后的绘制操作 中生效。在完成绘图操作之后,都要利用SelectObject把先前的 GDI对象选入设备描述表,以便使其恢复到先前的状态。制作:刘晓翔
8
暨南大学珠海学院《Windows编程》
2015-7-22
简单绘图Fundamentals of Computers
JINAN University
使用画刷CBrush类绘图//绘制矩形填充块 CBrush brush(RGB(255,0,0)); CClientDC dc(this); dc.FillRect(CRect(m_ptOrigin,point), &brush); //绘制位图填充块 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CBrush brush(&bmp); CClientDC dc(this); dc.FillRect(CRect(m_ptOrigin,point), &brush);制作:刘晓翔
9
暨南大学珠海学院《Windows编程》
2015-7-22
简单绘图Fundamentals of Computers
JINAN University
绘制矩形框CPen pen(PS_SOLID,5,RGB(255,0,0)); CClientDC dc(this); CPen* pOldPen = dc.SelectObject(&pen); dc.Rectangle(CRect(m_ptOrigin,point)); dc.SelectObject(pOldPen);
//若要绘制空心的矩形框,需要在设备描述表中将默认 画刷(填充白色)换成透明画刷 CBrush* pOldBrush =(CBrush*)dc.SelectStockObject(HOLLOW_BRUSH); dc.SelectObject(pOldBrush);10暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
绘制连续线条m_ptOrigin = point; //OnLButtionDown //OnMouseMove CClientDC dc(this); if (nFlags == MK_LBUTTON ) { dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_ptOrigin = point; }11暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
简单绘图Fundamentals of Computers
JINAN University
橡皮筋技术//OnLButtionDown m_ptOrigin = m_ptEnd = point; //OnMouseMove CClientDC dc(this); if (nFlags == MK_LBUTTON ) { //通过取反的模式擦除旧线条 dc.SetROP2(R2_NOT); dc.MoveTo(m_ptOrigin); dc.LineTo(m_ptEnd); //绘制新线条 m_ptEnd = point; dc.MoveTo(m_ptOrigin); dc.LineTo(m_ptEnd); }12暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
文本编程Fundamentals of Computers
JINAN University
在窗口输入文字——视类OnDraw函数MFC中专门为视类提供了响应WM_PAINT消息的响 应函数OnDraw(CDC* pDC)。 如果要防止窗口重绘时显示的文字或图形被刷新,文 字输出和图形绘制的操作都应该在OnDraw函数里完成。void CTextView::OnDraw(CDC* pDC) { CTextDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);}13
pDC->TextOut(100,100, "第四讲 文本编程");制作:刘晓翔 暨南大学珠海学院《Windows编程》 2015-7-22
文本编程Fundamentals of Computers
JINAN University
在窗
口输入文字——CString类MFC中提供了一个字符串类:CString,这个类没有基类。一个 CString对象由一串可变长度的字符组成。 利用CString操作字符串时,无论存储多少个字符,我们都不需 要对它进行内存分配,因为这些操作在CString类的内部都已经替我 们完成了。void CTextView::OnDraw(CDC* pDC) { CTextDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CString str("第四讲 文本编程"); pDC->TextOut(100,100, str); }制作:刘晓翔 暨南大学珠海学院《Windows编程》
14
2015-7-22
文本编程Fundamentals of Computers
JINAN University
添加字符串资源CString提供了一个成员函数:LoadString 该函数可以装载一个由nID标识的字符串资源。其好 处是,在需要使用的时候将其装载到字符串变量中,这 样就不需要在程序中对字符串变量直接赋值。 在VC开发界面左边的Resource View中,通过String Table可添加字符串资源。void CTextView::OnDraw(CDC* pDC) { … CString str; str.LoadString(IDS_MYSTRING); pDC->TextOut(100,100, str); }15暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
文本编程Fundamentals of Computers
JINAN University
创建文本插入符int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here CreateSolidCaret(20,200); ShowCaret(); return 0; }制作:刘晓翔
16
暨南大学珠海学院《Windows编程》
2015-7-22
文本编程Fundamentals of Computers
JINAN University
创建文本插入符(续)通常,插入符的大小应当根据当前所选的字号来变化。 调用CDC类的GetTextMetrics成员函数可以得到设备描述表中当 前字体的度量信息。
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const //详见MSDN
gh17
tmAscent
tmDescent base line
制作:刘晓翔 暨南大学珠海学院《Windows编程》 2015-7-22
文本编程Fundamentals of Computers
JINAN University
根据当前所选字号设置插入符大小int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CreateSolidCaret(tm.tmAveCharWidth/8, tm.tmHeight); ShowCaret(); return 0;
}18暨南大学珠海学院《Windows编程》
制作:刘晓翔 2015-7-22
文本编程Fundamentals of Computers
JINAN University
创建图形插入符int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CreateCaret(&bmp); ShowCaret(); return 0; }
制作:刘晓翔
19
暨南大学珠海学院《Windows编程》
2015-7-22
正在阅读:
第四讲 绘图与文本编程08-26
宋代建筑03-08
精选《文苑·经典美文》摘自南亭11-21
常见知识汇集02-28
海上石油天然气生产设施检验规定-中华人民共和国能源部令 - 第403-09
公司员工社会保险管理制度03-20
公务员考试经济常识01-14
附表4:家庭经济困难学生认定量化评分表04-06
初一下数学不等式应用题汇总08-10
XX企业基于物流信息系统的库存策略探析03-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 绘图
- 文本
- 编程
- (启功繁体)道德经原文,便于学习书法
- 深圳市小学学校安全工作五年规划
- 语文口语交际练习题及答案
- 科沃660变频器说明书
- 2017年消防基本知识试题多选题100题附答案
- 新闻报道与公众人物的隐私权
- 尔雅课程选修-舞蹈鉴赏答案
- 高校科技成果转化工作的重要性
- 销售业务流程图2
- 初中会考地理二轮复习专题一
- 2013年餐饮服务食品安全监督量化分析管理工作实施方案
- 河北工业大学2015年经济管理学院硕士学位研究生招生专业参考书目
- 神经外科英文词汇汇总(DOC)
- 剖析绩效管理难点
- 09-10学年第二学期《高等代数》期末考试卷1
- 2016考研复习资料:考研健康饮食助你高效备考
- 7B unit 6 一轮复习
- 锦州港审计失败案例分析
- 读《红岩》有感
- 最新新课标人教版小学二年级下册数学全册教案集(高效精品教案)