灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4839回复:0

用win32汇编画八卦图

楼主#
更多 发布于:2011-11-21 09:01

图片:52_3710_901b6041d000ab4.jpg


汇编程序的图:

这几天在学习汇编语言的图形操作,于是想起以前用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



喜欢0 评分0
游客

返回顶部