用汇编绘制三角形,定义数组的疑惑。
我用它绘制了直线,
invoke MoveToEx,hdc,10,10,NULL
invoke LineTo,hdc,500,300
效果非常好。
我想画可以填充颜色的多边形,可是对于polygon中的数组非常头疼。
=================================
在定义这个之后:
dwPointArraydd6 dup (?)
dwPointConstdd10,90,70,150,75,105
----------
???中间这一段代码很头疼
-----------
lea传递地址后,使用这个之前:
invokeSetPolyFillMode,_hDC,WINDING
invokePolygon,_hDC,addr dwPointArray,3
=====================
如何用一两句简单的命令将所有数组的值传递给dwPointArray,使它正常使用呢?
请高人指点!谢谢。
[解决办法]
多单元数据的传送, 比较简单的就是 rep movsd 了:
mov esi, offset dwPointConst
mov edi, offset dwPointArray
mov ecx, 6
rep movsd
[解决办法]
看下面的这段代码, 应该是将原来各点的 .y 坐标增加了 70, 所以, 下面的这段代码应该是在 rep movsd 之后
[解决办法]
看是要置为哪个点了. 如果是固定的, 可以通过个预置常量来进行, 比如 i:
mov esi, offset dwPointArray[i*8]
push pt.x
pop [esi]
push pt.y
pop [esi][4]
如果这个点不是固定的, 可以用个变量比如 eax 来存放是第几个点, 这样就是:
lea esi, dwPointArray[eax*8]
push pt.x
pop [esi]
push pt.y
pop [esi][4]
上面的 i/eax 都是以 0 为基, 即首个点的序号为 0