第07章 图形操作 · 7.2 绘制图形(1)
来源:互联网 发布:telnet ip 端口号 编辑:程序博客网 时间:2024/05/24 05:07
有了前面的这些基础,这一节将用一个时钟的例子来演示如何进行简单的绘图,例子的源代码可以在所附光盘的Chapter07\Clock目录中找到,程序运行的结果如图7.4所示。
图7.4 时钟程序的运行结果
资源脚本文件Clock.rc中简单定义了一个用做图标的ico文件:
//###################################################################include <resource.h>//###################################################################define ICO_MAIN Ox1000ICO_MAIN ICON "Main.ico"源文件Clock.asm如下: .386 .model flat, stdcall option casemap :none;####################################################################; Include 文件定义;####################################################################include windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.libinclude Gdi32.incincludelib Gdi32.lib;####################################################################; Equ 等值定义;####################################################################ICO_MAIN equ 1000hID_TIMER equ 1;####################################################################; 数据段;#################################################################### .data?hInstance dd ?hWinMain dd ?dwCenterX dd ? ;圆心XdwCenterY dd ? ;圆心YdwRadius dd ? ;半径 .constszClassName db 'Clock',0;####################################################################; 代码段;#################################################################### .code;####################################################################; 计算时钟的位置、大小等参数;####################################################################_CalcClockParam proc local @stRect:RECT invoke GetClientRect,hWinMain,addr @stRect mov eax,@stRect.right sub eax,@stRect.left ;eax = 宽度 mov ecx,@stRect.bottom sub ecx,@stRect.top ;ecx = 高度;********************************************************************; 比较客户区宽度和高度,以小的值用做时钟的直径;******************************************************************** .if ecx > eax mov edx,eax ;高度 > 宽度 sub ecx,eax shr ecx,1 mov dwCenterX,0 mov dwCenterY,ecx .else mov edx,ecx sub eax,ecx shr eax,1 mov dwCenterX,eax mov dwCenterY,0 .endif shr edx,1 mov dwRadius,edx add dwCenterX,edx add dwCenterY,edx ret _CalcClockParam endp;####################################################################; 计算时钟圆周上某个角度对应的 X 坐标; X = 圆心X + Sin(角度) * 半径;####################################################################_dwPara180 dw 180_CalcX proc _dwDegree,_dwRadius local @dwReturn fild dwCenterX fild _dwDegree fldpi fmul ;角度*Pi fild _dwPara180 fdivp st(1),st ;角度*Pi/180 fsin ;Sin(角度*Pi/180) fild _dwRadius fmul ;半径*Sin(角度*Pi/180) fadd ;X+半径*Sin(角度*Pi/180) fistp @dwReturn mov eax,@dwReturn ret _CalcX endp;####################################################################; 计算时钟圆周上某个角度对应的 Y 坐标; Y = 圆心Y - Cos(角度) * 半径;####################################################################_CalcY proc _dwDegree,_dwRadius local @dwReturn fild dwCenterY fild _dwDegree fldpi fmul fild _dwPara180 fdivp st(1),st fcos
- 第07章 图形操作 · 7.2 绘制图形(1)
- 第07章 图形操作 · 7.2 绘制图形(2)
- 第07章 图形操作 · 7.1 GDI原理(1)
- 第07章 图形操作 · 7.1 GDI原理(2)
- 第07章 图形操作 · 7.1 GDI原理(3)
- 第07章 图形操作 · 7.1 GDI原理(4)
- 第三节 windows绘制图形
- windows phone 绘制图形操作
- 图形绘制1
- canvas 绘制图形1
- CreateJS 绘制图形1
- 绘制图形
- 绘制图形
- 绘制图形
- 绘制图形
- 绘制图形
- 图形绘制
- 绘制图形
- geo2map坐标转换
- Chrome 无插件不重启换UA
- 第07章 图形操作 · 7.1 GDI原理(4)
- 什么是软文
- 什么是CSQA(注册软件质量保证师)国际认证?
- 第07章 图形操作 · 7.2 绘制图形(1)
- Jquery 仿淘宝京东多条件筛选 可自行结合ajax加载
- 第07章 图形操作 · 7.2 绘制图形(2)
- 二叉树的深度 Java
- 为什么析构函数最好是虚函数?
- 传智特刊第三季——应届生何必去走两年弯路人生……
- extjs combobox setValue 显示问题
- MFC中绘图的几种方式
- Word 页脚处理