管理员
|
楼主#
更多
发布于: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
| |  | |  |
|