用win32汇编画八卦图


汇编程序的图:

这几天在学习汇编语言的图形操作,于是想起以前用C#画过个小八卦图

半径R自己给……

Graphics g = e.Graphics;
            Brush fillWhiteBrush = Brushes.White;
            Brush fillBlackBrush = Brushes.Black;
            g.FillPie(fillWhiteBrush, 0, 0, r, r, -90, -180);//左半圆
            g.FillPie(fillBlackBrush, 0, 0, r, r, 90, -180);//右半圆
            g.FillEllipse(fillWhiteBrush, r/4, 0, r / 2, r / 2);//上中型圆
            g.FillEllipse(fillBlackBrush, r / 4, r / 2, r / 2, r / 2);//下中型圆
            g.FillEllipse(fillBlackBrush, 9*r/20, r/5, r / 20, r / 20);//左小圆
            g.FillEllipse(fillWhiteBrush, 9 * r / 20, 7*r/10, r / 20, r / 20);//右小圆

win32汇编的实现中需要调用GDI的API函数来实现……

包括:画笔(CreatePen)、画刷(GetStockObject)、坐标定位(MoveToEx)、画直线(LineTo)、画椭圆(Ellipse)、画扇形(Pie)……

注释已经很清楚了,我就不废话了……

绘图核心源码:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;画太极八卦
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_PaintTaiJi proc
         LOCAL hBrush:HBRUSH;黑色笔刷
         LOCAL wBrush:HBRUSH;白色笔刷
         LOCAL hPen:HPEN;白色画笔
         ;LOCAL lpPoint:LPPOINT
         invoke  Ellipse,hDc,  0,0,200,200;大圆
         invoke  GetStockObject,BLACK_BRUSH;
         mov hBrush,eax;获取黑色笔刷并保存起来
         invoke  GetStockObject,DC_BRUSH;
         mov wBrush,eax;获取白色笔刷并保存起来
         invoke SelectObject,hDc,hBrush;选择黑色笔刷
         invoke Pie,hDc,0,0,200,200,100,0,100,200;左半个扇形
         invoke  Ellipse,hDc,  50,100,150,200;右半小扇形
        
        
         invoke SelectObject,hDc,wBrush;选择白色笔刷
         invoke Pie,hDc,50,0,150,100,100,0,100,100;左半小扇形
         invoke Ellipse,hDc,  95,145,105,155;上小圆
        
         ;将画上小圆留下的黑色线条擦去
         invoke MoveToEx,hDc,100,1,0;起始坐标移动到(100,1)处
         ;将白色(RGB值为:255 255 255)填充到eax
         xor eax,eax
         mov ah,255
                 mov al,255
                 shl eax,8
                 mov al,255;
                
         invoke CreatePen,PS_SOLID,2,eax;
         mov hPen,eax;
         invoke SelectObject,hDc,hPen;
         invoke LineTo,hDc,99,99;
         ;
        
          invoke SelectObject,hDc,hBrush;选择黑色笔刷
         invoke  Ellipse,hDc,  95,45,105,55;上小圆
         
    ret

_PaintTaiJi endp

时间: 2024-11-30 23:25:02

用win32汇编画八卦图的相关文章

PS教你用布尔运算绘制一个太极八卦图

  布尔运算是UI设计中一个关键的知识点,今天@P大点S微博 继续给不熟悉的同学补补课.用一个八卦图教你熟悉布尔运算,特别适合新手练习,已经有不少同学交作业了,一起来做一个! 新建一个长宽相同的画布,布置两条上下左右居中的参考线. 先画中间的太极图,用矢量椭圆画一个深灰色的圆形,颜色选择现在无所谓,看着舒服就行,等完成后再改回来. 复制一层,CTRL+T缩小一点改成白色,用"减去"模式画一个矩形删掉半个圆形. 按A点击白色圆形,CTRL+ALT+T复制路径.缩小50%,为了精确,可以直

12行javascript代码绘制一个八卦图_javascript技巧

一句话说明:用有限的代码构建一个1024*1024的颜色矩阵,秀出你的编程&艺术之美 起源于 stackexchange 上的一个问题, 这里稍微做了一下扩展,支持更多编程语言,并放宽了代码长度的限制. 规则 目标: 通过实现 模版 中的一个函数 get_color_at(x, y) ,在一个 1024*1024 的画布上画出尽可能 "有意思" 的图案. 参数: int x, int y ,取值均为 0 - 1023,对应画布上坐标点,左上角为起始点 (0,0) 返回: int

代码-win32汇编加速键不好使怎么解决?

问题描述 win32汇编加速键不好使怎么解决? 什么加载加速键,消息循环,响应都弄了,就是不好使 代码:http://pan.baidu.com/s/1o6p6kx8 解决方案 参考:http://wenku.baidu.com/link?url=VJlWwe9eL2dZIazPNIh1YAEisFrJPmScDdfXrpQfp7z9yGq_bSc_IlOrhua5AdvBCJbpuVTAWL_vJN4KGFcXNyafJToLglEaNqWULIdNzku 解决方案二: 参考:http://b

求助一道画ER图的题目

问题描述 求助一道画ER图的题目 本人初学数据库,老师布置了一个ER图的作业,想了很久还是觉得很混乱题目大致如下:一个健康公司正在进行一个试药项目,该项目通过志愿者试药来确定药是否有副作用.在每一次试药中,一个药品会被多个志愿者尝试.这个项目是由一个志愿者试药,然后报告这个药是否有副作用,每个报告需要记录两个内容:1,志愿者是否有副作用 2,如果有,这个副作用是什么,有可能一个志愿者有多个副作用 没有已定义的副作用,因为副作用是不断被发现的然后,约束条件:1,每个志愿者只能尝试一种药2,关于志愿

"hello,world!"win32汇编小程序

"hello,world!"win32汇编小程序szText db "Hello, world!",0 szCaption db "Win32Asm",0 .codestart: push MB_OK lea eax,szCaption push eax lea eax,szText push eax push NULL call messageboxa xor eax,eax push eax call exitprocess end star

Win32汇编的环境和基础

1.32位环境简介 在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没

网站设计分析:画线框图容易忽略的几件事

通过工作中的观察与总结,我发现不少新人交互设计师以及产品人员,在画线框图时都会忽略一些重要内容,导致和视觉设计师的沟通成本增高.返工增多.工作效率下降.设计质量下降等重要问题.为了解决这些问题,一方面需要加强沟通,另一方面还需要多站在视觉的角度考虑线框图的设计,使大家的配合更默契. 那么具体怎样做呢?以下就是我工作中积累的一些心得,希望对大家有所帮助. 一.通过明暗对比表达 以前,我是这样画线框图的,这样能非常清晰的展示各模块元素之间的布局关系.然后我会告诉视觉,这些模块或元素之间的优先级关系是

visio怎么画UML图?

  visio怎么画UML图?          1.首先笔者用来做例子的是2010版的Visio 2.打开visio,选择如图红框中的"软件和数据库"选项 3.进入之后,选择"UML模型图" 4.选择右下角的"新建" 5.在弹出的页面中,在左下角的"顶层包"上右击

chart js canvas-使用chart.js在canvas上面画线形图bug

问题描述 使用chart.js在canvas上面画线形图bug 我使用chart.js画线形图,有几个筛选条件,第一次绘制没有问题,当第二绘制时显示的是正确的线形图,可是当鼠标在线形图上滑动的时候会出现第一次的线形图跟第二次的线形图闪烁,来回切换的情况. 我感觉是canvas这个标签有自己的缓存还是什么的,但是用网上的办法不管用 解决方案 兄弟,我刚遇到这个,仔细看chart.js的代码,找到解决办法了, myLineChart.destroy(); myLineChart =myNewChar