>_<:这里包含字体设置及各种绘图,只要稍微看一下代码就能理解,这里不多介绍

>_<:Hello.h

 1 #include<afxwin.h>
 2 class CMyApp:public CWinApp
 3 {
 4 public:
 5     virtual BOOL InitInstance();
 6 };
 7 class CMainWindow:public CFrameWnd
 8 {
 9 public:
10     CMainWindow();
11 protected:
12     afx_msg void OnPaint();
13     afx_msg void OnLButtonDown(UINT m_nFlags,CPoint point);
14     DECLARE_MESSAGE_MAP();
15 };

>_<:Hello.cpp

  1 #include<afxwin.h>
  2 #include<math.h>
  3 #include"Hello.h"
  4 #define SEGMENTS 500
  5 #define PI 3.1415926
  6
  7 int PenStyle[7]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};//实线\宽\窄\宽+窄\宽+2窄\没有\实线不外伸
  8 int PenNum=0;
  9 int BrushStye[6]={HS_BDIAGONAL,HS_FDIAGONAL,HS_CROSS,HS_HORIZONTAL,HS_DIAGCROSS,HS_VERTICAL};//45\135\90交叉\0\45交叉\90
 10 int BrushNum=0;
 11
 12 CMyApp myApp;
 13 //
 14 //CMyApp member function
 15 BOOL CMyApp::InitInstance()                   //初始化函数
 16 {
 17     m_pMainWnd=new CMainWindow;
 18     m_pMainWnd->ShowWindow(m_nCmdShow);
 19     m_pMainWnd->UpdateWindow();
 20     return TRUE;
 21 }
 22 /
 23 //CMainWindow message map and member function
 24 BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)           //消息映射
 25     ON_WM_PAINT()
 26     ON_WM_LBUTTONDOWN()
 27 END_MESSAGE_MAP()
 28
 29 CMainWindow::CMainWindow()      //创建窗口
 30 {
 31     Create(NULL,_T("The Hello"),WS_OVERLAPPED,CRect(20,40,640,440));//CFrameWnd下的成员函数8个参数,6个默认
 32 }                               //这个参数产生垂直滚动条
 33
 34 void CMainWindow::OnPaint()
 35 {
 36
 37     CRect rect;
 38     GetClientRect(&rect);
 39
 40     /*72点,Arial,并带有下拉阴影生成的“Hello MFC"
 41     CFont font;
 42     font.CreatePointFont(720,_T("Arial"));//创建72点,Arial字体
 43
 44     CPaintDC dc(this);
 45     dc.SelectObject(&font);
 46     dc.SetBkMode(TRANSPARENT);//背景模式 设为透明
 47
 48     CString string=_T("Hello MFC");
 49
 50     rect.OffsetRect(16,16);//从窗口中心向右向下偏移几个像素点的位置
 51     dc.SetTextColor(RGB(192,192,192));
 52     dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 53
 54     rect.OffsetRect(-16,-16);
 55     dc.SetTextColor(RGB(0,0,0));
 56     dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//单行、水平、竖直居中的文本
 57     */
 58
 59     /*LOFGFONT 自定义字体 呈现出旋转效果
 60     CPaintDC dc(this);
 61     dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
 62     dc.SetBkMode(TRANSPARENT);
 63
 64     for(int i=0;i<3600;i+=360){
 65         LOGFONT lf;//自己创建一种字体
 66         ::ZeroMemory (&lf,sizeof(lf));
 67         lf.lfHeight=180;     //26个像素点
 68         lf.lfWeight=FW_BOLD; //粗黑
 69         //lf.lfItalic=TRUE;    //倾斜
 70         lf.lfEscapement=i;     //配合使用每次旋转36度
 71         lf.lfOrientation=i;
 72         ::lstrcpy(lf.lfFaceName,_T("Arial"));
 73         CFont font;
 74         font.CreatePointFontIndirect(&lf);
 75
 76         CFont* pOldFont=dc.SelectObject(&font);
 77         dc.TextOutA(0,0,CString(_T("Hello,MFC")));
 78         dc.SelectObject(pOldFont);
 79     }
 80     */
 81 }
 82
 83 void CMainWindow::OnLButtonDown(UINT m_nFlags,CPoint point)//点击鼠标左键画图
 84 {
 85     //CClientDC dc(this);
 86     CPaintDC dc(this);
 87     CRect rect;
 88     GetClientRect(&rect);
 89     dc.Rectangle(rect);
 90
 91
 92     //dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
 93
 94
 95     //dc.SetROP2(R2_BLACK);//绘图模式:颜色操作;2.1.3
 96     //dc.MoveTo(rect.left,rect.top);
 97     //dc.LineTo(rect.right,rect.bottom);
 98
 99     //POINT aPoint[5]={0,0,0,100,100,100,100,0,0,0};
100     //dc.Polyline(aPoint,5);         //将一系列点用线段连起来
101
102     //POINT bPoint[4]={0,100,100,100,100,0};
103     //dc.MoveTo(0,0);
104     //dc.PolylineTo(bPoint,4);          //从当前位置开始将一系列的点用线段连起来,并将当前位置移折致折线的终点
105
106     //int nWidth=rect.Width();            //画正弦曲线
107     //int nHeight=rect.Height();
108
109     //CPoint aPoint[SEGMENTS];
110     //for(int i=0;i<SEGMENTS;i++){
111     //    aPoint[i].x=(i*nWidth)/SEGMENTS;
112     //    aPoint[i].y=(int)((nHeight/2)*(1-(sin((2*PI*i)/SEGMENTS))));
113     //}
114     //dc.Polyline(aPoint,SEGMENTS);
115
116     /*画笔的创建和加载
117     CPen cPen(PenStyle[(PenNum++)%7],1,RGB(192,0,0));//==cPen.CreatePen(...);
118     dc.SelectObject(&cPen);
119     CBrush cBrush(BrushStye[(BrushNum++)%6],RGB(255,0,0));
120     dc.SelectObject(&cBrush);
121     */
122
123     /*扩展笔____必须是通路
124     LOGBRUSH lb;
125     lb.lbStyle=BS_SOLID;
126     lb.lbColor=RGB(0,255,0);
127     CPen pen(PS_GEOMETRIC|PenStyle[(PenNum++)%7]|PS_ENDCAP_FLAT|
128         PS_JOIN_ROUND,3,&lb);
129     CPen* pOldPen=dc.SelectObject(&pen);
130     */
131
132
133     /*画刷原点
134     CPoint point(x1,y1);     //矩形左上角的逻辑坐标
135     dc.LPtoDP(&point);       //逻辑坐标转换成设备坐标
136     point.x %= 8;
137     point.y %= 8;
138     cBrush.UnrealizeObject();//允许画刷原点移动
139     dc.SetBrushOrg(point);   //0~7之间
140     dc.SelectObject(&cBrush);
141     dc.Rectangle(x1,y1,x2,y2);
142     */
143
144
145     /*建立通路
146     dc.BeginPath();
147     dc.MoveTo(0,0);
148     dc.LineTo(100,200);
149     dc.LineTo(200,100);
150     dc.CloseFigure();
151     dc.EndPath();
152     dc.StrokePath();
153     */
154
155
156     /*ARC
157     CRect rect0(0,0,200,100);
158     CPoint cPoint1(0,0);
159     CPoint cPoint2(200,100);
160     dc.Rectangle(rect0);
161     dc.Arc(rect0,cPoint1,cPoint2);//外接矩形+从中心引出的两个边界线所夹的范围
162     dc.MoveTo(0,0);
163     dc.LineTo(200,100);
164
165     CRect rect1(0,102,200,202);
166     CPoint cPoint3(0,102);
167     CPoint cPoint4(200,202);
168     dc.Rectangle(rect1);
169     dc.ArcTo(rect1,cPoint3,cPoint4);
170     CPoint cPointNow=dc.GetCurrentPosition();//终点坐标
171     */
172
173     /*纳克
174     POINT aPoint1[4]={120,100,120,200,250,150,500,40};
175     POINT aPoint2[4]={120,100,50,350,250,200,500,40};
176     dc.PolyBezier(aPoint1,4);
177     dc.PolyBezier(aPoint2,4);
178     */
179
180
181
182     //dc.SetMapMode(MM_TEXT);//映射模式2.1.4 按比例缩放输出
183     //dc.Ellipse(0,0,100,100);//矩形内切圆(弧)
184     //dc.Ellipse(rect.right-100,rect.bottom-100,rect.right,rect.bottom);
185     //dc.Ellipse(point.x,point.y,point.x+100,point.y+100);//鼠标位置
186
187     //dc.SetMapMode(MM_ISOTROPIC);//可编程映射模式,自定义比例缩放(MM_ANISOTROPIC单位长度可以不同;MM_ISOTROPIC单位长度相同)
188     //dc.SetWindowExt(500,500);     //设置窗口逻辑值为(0,0)到(500,500)
189     //dc.SetViewportExt(rect.Width(),rect.Height());
190     //dc.Ellipse(0,0,500,500);
191
192 }

[游戏学习24] MFC 各种绘图 字体学习相关推荐

  1. 【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/j2me-2/774.html Himi从写 ...

  2. MATLAB学习笔记5:绘图基础与数据可视化(中)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  3. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  4. Android_2D绘图的学习Paint,Canvas(三)

    前言 上一节,学习了Paint的高级用法后,这一节我们将canvas的用法.主要涉及到canvas的绘制坐标变换translate,rotate.还没看过上一节的请点击这里:Android_2D绘图的 ...

  5. Android_2D绘图的学习Paint,Canvas(二)

    前言 上一节,学会了Paint,Canvas的基本用法后,这一节,学习Paint的高级用法.还没看过上一节的请点击这里:Android_2D绘图的学习Paint,Canvas(一). 一,文字的绘制 ...

  6. 【组队学习】【24期】Datawhale组队学习内容介绍

    第24期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: 零基础入门语音识别(食物声音识别) Docker教程 数据挖掘实践(智慧海洋) 集成学习(中) 河北邀请赛(二手车价 ...

  7. 学习WPF——使用Font-Awesome图标字体

    学习WPF--使用Font-Awesome图标字体 原文:学习WPF--使用Font-Awesome图标字体 图标字体介绍 在介绍图标字体之前,不得不介绍图标格式ICON ICON是一种图标格式,我们 ...

  8. R 学习 - 图形设置中英字体

    微信公众号:http://mp.weixin.qq.com/s/NAwyvtTS7t5rRU7KKBwHTA 绘制生信宝典调查总结文中的柱状图时,出现了中文乱码,就搜索了下解决方案,记录如下. 修改图 ...

  9. 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始

    1.在开始正式进入学习之前,有几个概念需要澄清,这样有利于我们对后续的学习有一个大致的框架感 监督型学习与无监督型学习 深度强化学习的范畴 监督型学习是基于已有的带有分类标签的数据集合,来拟合神经网络 ...

最新文章

  1. mysql 查询某个日期时间段,每天同一时间段的数据
  2. AI正从“感知智能”走向“认知智能”
  3. echarts中toolbox位置_基于QGIS中的LSMS(大规模均值漂移)分割算法
  4. CUDA编程之快速入门
  5. 岗位推荐 | 阿里巴巴达摩院招聘自然语言处理、机器翻译算法专家
  6. mavenspringboot配置不同profile环境
  7. JavaWEB中读取配置信息
  8. Windows核心编程条件变量
  9. 如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
  10. java里面比较重要的东西_Java面向对象程序设计中很重要的一些东西
  11. html5中加入视频格式,HTML5音视频格式video和audio
  12. Java 大对象类型的 Hiberante 映射
  13. java php 通讯录,基于ssh/bs/java/asp.net/php/web通讯录管理系统
  14. 常见linux软件下载地址
  15. excel删除无尽空白行_Excel 快速删除空白行
  16. 手把手教你做出数据可视化项目(一)页面布局
  17. win10输入法简繁体切换及全角和半角切换快捷键
  18. EndNote X7使用笔记
  19. 液晶显示屏模组工艺流程是什么,液晶显示模组生产流程的意义
  20. 一起talk C栗子吧(第一百九十六回:C语言实例--DIY less命令五 )

热门文章

  1. lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
  2. Luhn算法验证信用卡的合法性
  3. 网络编程(原始套接字)
  4. SpringBoot开发案例从0到1构建分布式秒杀系统
  5. (转)python协程2:yield from 从入门到精通
  6. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1
  7. Apache Ant安装 验证
  8. Linux下安装oracle提示INS-20802 Oracle Net Configuration Assistant
  9. java ThreadLocal用法及原理
  10. iOS - 内购_类型