一、实验要求
- 以窗口中心点为原点,绘制y=x2的函数曲线,并在曲线旁边用文字描述;
- 绘制一个红色的圆,并绘制该圆的外切正方形,该正方形填充颜色为蓝色,边线颜色为绿色。
二、实验过程
(一)绘制y=x2的函数曲线
1、利用MFC新建一个基于对单文档的应用程序(SDI应用程序),工程名为Function。
2、在类视图中找到CfunctionVie,在这个文档的头文件中添加:#include "math.h"
3、在文件中找到下OnDraw()方法。在其中添加代码:根据示例图中的要求先绘制函数图像,并显示文字描述。主要分为三步完成:
① 绘制横纵坐标轴,设置原点;
② 根据要求绘制函数图像;
③ 输出函数文本描述。
4、这个程序使用到了绘图函数MoveTo()和LineTo(),分别控制起始点和终点;根据函数绘制图像以及文本的输出。其中CRect 实际上是一个矩形的类。运行结果如下图。
(二)按要求绘制圆形及其外接矩形
1、继续在程序中添加代码,绘制一个红色的圆及它的绿色的外接矩形并将两个图形之间的部分填充为蓝色。分为三步:
①绘制一个矩形其边框为绿色;
②将其矩形内部填充为蓝色;
③绘制一个边框为红色的圆即可实现。
代码如下。
2、这个程序主要使用到了Pen和Brush,需要注意其使用的流程。运行结果如下图。
(三)显示一幅位图
1、在菜单栏中找到插入,选择插入资源,类型为Bitmap。选择一张准备好的位图图片,选中插入。
2、继续添加代码,将插入的位图载入并显示出来。代码如下。
其中的StretchBlt()方法将内存中的位图拷贝到屏幕上,并且可以根据屏幕画图区的大小来进行伸缩,适应响应的屏幕或者控件。查阅了资料,参数作用分别为:
CDC::StretchBlt ( int x, int y,int nWidth,int nHeight, CDC* pSrcDC, intxSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)
返回值:如果位图已经绘制,则返回非零值,否则为0。
参数: x 目标矩形左上角的X逻辑坐标。
y 目标矩形左上角的Y逻辑坐标。
nWidth 目标矩形的宽度(逻辑单位)。
nHeight 目标矩形的高度(逻辑单位)。
pSrcDC 指定源设备上下文。
xSrc 源矩形左上角的X逻辑坐标。
ySrc 源矩形左上角的Y逻辑坐标。
nSrcWidth 源矩形的宽度(逻辑单位)。
nSrcHeight 源矩形的高度(逻辑单位)。
dwRop 指定光栅操作。