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

>_<:Hello.h

 #include<afxwin.h>
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow:public CFrameWnd
{
public:
CMainWindow();
protected:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT m_nFlags,CPoint point);
DECLARE_MESSAGE_MAP();
};

>_<:Hello.cpp

 #include<afxwin.h>
#include<math.h>
#include"Hello.h"
#define SEGMENTS 500
#define PI 3.1415926 int PenStyle[]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};//实线\宽\窄\宽+窄\宽+2窄\没有\实线不外伸
int PenNum=;
int BrushStye[]={HS_BDIAGONAL,HS_FDIAGONAL,HS_CROSS,HS_HORIZONTAL,HS_DIAGCROSS,HS_VERTICAL};//45\135\90交叉\0\45交叉\90
int BrushNum=; CMyApp myApp;
//////////////////////////////////////////////
//CMyApp member function
BOOL CMyApp::InitInstance() //初始化函数
{
m_pMainWnd=new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
/////////////////////////////////////////////
//CMainWindow message map and member function
BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd) //消息映射
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP() CMainWindow::CMainWindow() //创建窗口
{
Create(NULL,_T("The Hello"),WS_OVERLAPPED,CRect(,,,));//CFrameWnd下的成员函数8个参数,6个默认
} //这个参数产生垂直滚动条 void CMainWindow::OnPaint()
{ CRect rect;
GetClientRect(&rect); /*72点,Arial,并带有下拉阴影生成的“Hello MFC"
CFont font;
font.CreatePointFont(720,_T("Arial"));//创建72点,Arial字体 CPaintDC dc(this);
dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);//背景模式 设为透明 CString string=_T("Hello MFC"); rect.OffsetRect(16,16);//从窗口中心向右向下偏移几个像素点的位置
dc.SetTextColor(RGB(192,192,192));
dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER); rect.OffsetRect(-16,-16);
dc.SetTextColor(RGB(0,0,0));
dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//单行、水平、竖直居中的文本
*/ /*LOFGFONT 自定义字体 呈现出旋转效果
CPaintDC dc(this);
dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
dc.SetBkMode(TRANSPARENT); for(int i=0;i<3600;i+=360){
LOGFONT lf;//自己创建一种字体
::ZeroMemory (&lf,sizeof(lf));
lf.lfHeight=180; //26个像素点
lf.lfWeight=FW_BOLD; //粗黑
//lf.lfItalic=TRUE; //倾斜
lf.lfEscapement=i; //配合使用每次旋转36度
lf.lfOrientation=i;
::lstrcpy(lf.lfFaceName,_T("Arial"));
CFont font;
font.CreatePointFontIndirect(&lf); CFont* pOldFont=dc.SelectObject(&font);
dc.TextOutA(0,0,CString(_T("Hello,MFC")));
dc.SelectObject(pOldFont);
}
*/
} void CMainWindow::OnLButtonDown(UINT m_nFlags,CPoint point)//点击鼠标左键画图
{
//CClientDC dc(this);
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
dc.Rectangle(rect); //dc.SetViewportOrg(rect.Width()/2,rect.Height()/2); //dc.SetROP2(R2_BLACK);//绘图模式:颜色操作;2.1.3
//dc.MoveTo(rect.left,rect.top);
//dc.LineTo(rect.right,rect.bottom); //POINT aPoint[5]={0,0,0,100,100,100,100,0,0,0};
//dc.Polyline(aPoint,5); //将一系列点用线段连起来 //POINT bPoint[4]={0,100,100,100,100,0};
//dc.MoveTo(0,0);
//dc.PolylineTo(bPoint,4); //从当前位置开始将一系列的点用线段连起来,并将当前位置移折致折线的终点 //int nWidth=rect.Width(); //画正弦曲线
//int nHeight=rect.Height(); //CPoint aPoint[SEGMENTS];
//for(int i=0;i<SEGMENTS;i++){
// aPoint[i].x=(i*nWidth)/SEGMENTS;
// aPoint[i].y=(int)((nHeight/2)*(1-(sin((2*PI*i)/SEGMENTS))));
//}
//dc.Polyline(aPoint,SEGMENTS); /*画笔的创建和加载
CPen cPen(PenStyle[(PenNum++)%7],1,RGB(192,0,0));//==cPen.CreatePen(...);
dc.SelectObject(&cPen);
CBrush cBrush(BrushStye[(BrushNum++)%6],RGB(255,0,0));
dc.SelectObject(&cBrush);
*/ /*扩展笔____必须是通路
LOGBRUSH lb;
lb.lbStyle=BS_SOLID;
lb.lbColor=RGB(0,255,0);
CPen pen(PS_GEOMETRIC|PenStyle[(PenNum++)%7]|PS_ENDCAP_FLAT|
PS_JOIN_ROUND,3,&lb);
CPen* pOldPen=dc.SelectObject(&pen);
*/ /*画刷原点
CPoint point(x1,y1); //矩形左上角的逻辑坐标
dc.LPtoDP(&point); //逻辑坐标转换成设备坐标
point.x %= 8;
point.y %= 8;
cBrush.UnrealizeObject();//允许画刷原点移动
dc.SetBrushOrg(point); //0~7之间
dc.SelectObject(&cBrush);
dc.Rectangle(x1,y1,x2,y2);
*/ /*建立通路
dc.BeginPath();
dc.MoveTo(0,0);
dc.LineTo(100,200);
dc.LineTo(200,100);
dc.CloseFigure();
dc.EndPath();
dc.StrokePath();
*/ /*ARC
CRect rect0(0,0,200,100);
CPoint cPoint1(0,0);
CPoint cPoint2(200,100);
dc.Rectangle(rect0);
dc.Arc(rect0,cPoint1,cPoint2);//外接矩形+从中心引出的两个边界线所夹的范围
dc.MoveTo(0,0);
dc.LineTo(200,100); CRect rect1(0,102,200,202);
CPoint cPoint3(0,102);
CPoint cPoint4(200,202);
dc.Rectangle(rect1);
dc.ArcTo(rect1,cPoint3,cPoint4);
CPoint cPointNow=dc.GetCurrentPosition();//终点坐标
*/ /*纳克
POINT aPoint1[4]={120,100,120,200,250,150,500,40};
POINT aPoint2[4]={120,100,50,350,250,200,500,40};
dc.PolyBezier(aPoint1,4);
dc.PolyBezier(aPoint2,4);
*/ //dc.SetMapMode(MM_TEXT);//映射模式2.1.4 按比例缩放输出
//dc.Ellipse(0,0,100,100);//矩形内切圆(弧)
//dc.Ellipse(rect.right-100,rect.bottom-100,rect.right,rect.bottom);
//dc.Ellipse(point.x,point.y,point.x+100,point.y+100);//鼠标位置 //dc.SetMapMode(MM_ISOTROPIC);//可编程映射模式,自定义比例缩放(MM_ANISOTROPIC单位长度可以不同;MM_ISOTROPIC单位长度相同)
//dc.SetWindowExt(500,500); //设置窗口逻辑值为(0,0)到(500,500)
//dc.SetViewportExt(rect.Width(),rect.Height());
//dc.Ellipse(0,0,500,500); }

[游戏学习24] MFC 各种绘图 字体学习的更多相关文章

  1. matlab学习笔记8 基本绘图命令-基本绘图操作

    一起来学matlab-matlab学习笔记8 基本绘图命令_2基本绘图操作 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  2. WPF学习05:2D绘图 使用Transform进行控件变形

    在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...

  3. 8个经典的HTML5游戏在线试玩及源码学习

    原文地址:http://www.oschina.net/news/32364/html5-games 游戏,毫无疑问是拿来供大家娱乐玩耍的,这也无可厚非,但是,今天给大家分享的8个HTML5游戏,在好 ...

  4. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...

  5. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

  6. matlab学习笔记8 基本绘图命令-三维绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  7. matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  8. matlab学习笔记8 基本绘图命令-LineSpec线条设定

    一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...

  9. matlab学习笔记8 基本绘图命令-特殊图形绘制

    一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

随机推荐

  1. NOI 2001 食物链(eat)

    1074 食物链 2001年NOI全国竞赛  时间限制: 3 s  空间限制: 64000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description ...

  2. collectionView使用细节

    1.//创建组头组尾一个方法 - (UICollectionReusableView *)stCollectionView:(UICollectionView *)collectionView vie ...

  3. HDOJ 4508 湫湫系列故事——减肥记I (完全背包带优化)

    完全背包的模版题.. 加了一个小优化  n^2的写法 O(V+N)在本题中复杂度较高 不采纳 完全背包问题有一个很简单有效的优化,是这样的:若两件物品i.j满足c[i]<=c[j]且w[i]&g ...

  4. MRP生产计划模式在多品种小批量生产过程中遭遇挑战

    传统的MPS主生产计划和MRP物料需求计划的方式,已很难适应按需生产环境,很多企业正在转向按需生产环境,按需生产的最大的挑战是模拟计算CTP可以承诺交期.准时交货和应对不确定的插单等变化.不仅需要订单 ...

  5. php 正则获取html属性值

    个人不会写正则,但是工作中遇到了又没办法,所以记录下以后再遇到就好找了,呵呵 言归正传,下面是用正则匹配img的属性的方法: 1.匹配 “img” 中的 “src” 属性 $str='<img ...

  6. mysql学习(2)-MySQL服务器优化

    调优思路: 1.数据库设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎 2.数据的应用--怎样取数据,sql语句的优化 3.mysql服务优化--内存的使用,磁盘的使用 4.操作系统的优化 ...

  7. Python学习笔记- Python threading模块

    Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import time d ...

  8. html、css、js文件加载顺序及执行情况

      HTML页面加载和解析流程 1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件. 2. 浏览器开始载入html代码,发现<head& ...

  9. linux /usr/bin/ld: cannot find -lxxx

    在linux环境编译应用程式或lib的source code时出现如下错误:/usr/bin/ld: cannot find -lxxx 这些讯息会随着编译不同类型的source code 而有不同的 ...

  10. 数字电路-异同步 复位 线与 oc门

    1.同步电路和异步电路的区别是什么? 异步电路:主要是组合逻辑电路,用于产生地址译码器.FIFO或RAM的读写控制信号脉冲,但它同时也用在时序电路中,此时它没有统一的时钟,状态变化的时刻是不稳定的,通 ...