77范文网 - 专业文章范例文档资料分享平台

Windows实验报告第一次实验

来源:网络收集 时间:2020-05-08 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Windows实验报告

(计算机科学与技术学院 计112 1113022032 康照玲)

一、实验一

1、题目:在窗口上显示一个正方形内切圆,单击左键或者停顿5秒后显示正方形外接圆,在此之间交替显示。 2、关键代码分析

本次试验我是主要是实现定时5秒的转换,首先在创建窗口时设置定时器,在窗口函数中响应其信息,然后对设置的标志进行赋值,一次实现其定时功能。 关键代码如下: HDC hDC; //定义设备环境句柄. int x,y,z ; // 标志窗口处的坐标点 PAINTSTRUCT ps; //定义绘图结构体变量. static BOOL flag=TRUE; //标志定时功能 HBRUSH hBrush; // SetTimer(hWnd,1,2000,NULL); switch(iMessage) { case WM_CREATE: return 0; case WM_TIMER: flag=!flag;

InvalidateRect(hWnd,NULL,TRUE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd,&ps); GetClientRect(hWnd,&Rect1); //获得用户区的尺寸 x=(Rect1.left+Rect1.right)/2; y=(Rect1.top+Rect1.bottom)/2 ; 计算屏幕中心的坐标,即图形的中心 z=min(x,y)-100; if(flag==TRUE) { Rectangle(hDC,x-z,y-z,x+z,y+z); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,255)); SelectObject(hDC,hBrush); Ellipse(hDC,x-z,y-z,x+z,y+z); Sleep(1000); InvalidateRect(hWnd,NULL,1); //刷新用户区. DeleteObject(hBrush); } else { Ellipse(hDC,x-z,y-z,x+z,y+z);

hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,255)); SelectObject(hDC,hBrush); Rectangle(hDC,x-(sqrt(2))/2*z,y-(sqrt(2))/2*z,x+(sqrt(2))/2*z,y+(sqrt(2))/2*z); InvalidateRect(hWnd,NULL,1);Sleep(1000); DeleteObject(hBrush); //刷新用户区. } flag=!flag; EndPaint(hWnd,&ps); break; 二、实验二

1、题目:请编写程序,要求如下:(1)、定义一只红色的画笔,绘制一个等边五边形。(2)、用不同颜色的线条连接互不相邻的两个点(3)、用不同颜色的画刷填充用上述方法所形成的图形中的每一个区域 2、关键代码分析 HDC hDC; //定义设备环境句柄. HBRUSH hBrush; //定义画刷句柄 HPEN hPen; //定义画笔句柄 PAINTSTRUCT PtStr; //定义包含绘图信息的结构体变量 double dfRadious0=100.0,dfRadious1; //定义外部和内部正五边形外接圆半径. POINT lpOuterPoints[5],lpInnerPoints[5];//定义外,内正五边形点结构数组. POINT lpTriangle[3]; //定义三角形点结构数组.

dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);//根据外圆半径计算内园半径. //计算内外正五边形的点坐标. for(int i=0;i<5;i++) { lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi)); lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi)); lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi)); lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi)); }

switch(iMessage) {

case WM_PAINT: //处理绘图消息. hDC=BeginPaint(hWnd,&PtStr); //得到设备环境句柄 SetMapMode(hDC,MM_ANISOTROPIC); //设置映射模式. SetWindowOrgEx(hDC,-100,-100,NULL); //设置坐标原点. hPen=CreatePen(PS_SOLID,1,RGB(255,0,0)); //创新红色画笔. SelectObject(hDC,hPen); //将画笔选入. Polygon(hDC,lpOuterPoints,5); //画正五边形. //填充正五边形的不同区域. for(int i=0;i<5;i++) {

lpTriangle[0]=lpOuterPoints[i%5]; //生成图形中的三角形区域的坐标. lpTriangle[1]=lpInnerPoints[i%5]; lpTriangle[2]=lpOuterPoints[(i+1)%5]; //创新新画刷. hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30)); SelectObject(hDC,hBrush); //选入新画刷. Polygon(hDC,lpTriangle,3); //画三角形区域. lpTriangle[2]=lpInnerPoints[(i+4)%5]; //生成图形中的三角形区域的坐标. hBrush=CreateSolidBrush(RGB(i*1000,i*20,i*10));//创新画刷. SelectObject(hDC,hBrush); //选入画刷. Polygon(hDC,lpTriangle,3); //画三角形区域. } hBrush=CreateSolidBrush(RGB(255,0,255));//创新白画刷. SelectObject(hDC,hBrush); //选入画刷. Polygon(hDC,lpInnerPoints,5); //画中心的五边形. //用不同种颜色的画笔来绘制五角星. MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL); for(int i=1;i<=5;i++) { hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0)); SelectObject(hDC,hPen); LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y); } hPen=(HPEN)(GetStockObject(PS_NULL)); DeleteObject(hPen); //删除画笔. DeleteObject(hBrush); //删除画刷. EndPaint(hWnd,&PtStr); //结束绘图. return 0;

case WM_DESTROY: //处理关闭窗口信息. PostQuitMessage(0); //向应用程序发送WM_QUIT消息. return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }

三、实验三

1、题目:设计一个窗口,在窗口中有五行文字,字体分别为楷体、宋体、仿宋体、黑体、幼圆,字号由8到40线性增长,每行的文字相继出现后不消失,而且每一行文字的颜色有RGB(0,0,0)到RGB(255,255,255)线性增长。点击左键后在工作区中每行文字由40到8线性减小,颜色有RGB(255,255,255)到RGB(0,0,0)线性减小。 2、关键代码分析 int a=0;

HDC hDC; //定义设备环境句柄.

HFONT hF; //定义字体句柄. PAINTSTRUCT ps; //定义包含绘图信息的结构体变量 TEXTMETRIC tm; //定义包含字体信息的结构体变量.

static char lpsz_1[]=\无边落木萧萧下,不尽长江滚滚来。\//定义输出的字符串. char chFont[20]; //定义字体种类的字符串. int X=0,Y=0,i;

static int nCharlen=strlen(lpsz_1); //定义字符串长度变量. switch(iMessage) {

case WM_PAINT: //处理绘图消息. hDC=BeginPaint(hWnd,&ps); //获得设备环境指针. for(i=0;i

DeleteObject(hF); //删除字体句柄. } iFontSign++; //字体标志增加 InvalidateRect(hWnd,NULL,0);//刷新用户区. EndPaint(hWnd,&ps); //删除设备用户指针. return 0; break;

case WM_LBUTTONDOWN:

InvalidateRect(hWnd,NULL,1);//刷新用户区. iFontSign=0; for(;a<5;a++){ X=0;Y=0; hDC=BeginPaint(hWnd,&ps);//获得设备环境指针. for(i=0;i

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库Windows实验报告第一次实验在线全文阅读。

Windows实验报告第一次实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1035704.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: