sprite上的点无法直接获取颜色,但可以把sprite画出来再获取。常用的是draw_getpixel、surface_getpixel、surface_getpixel_ext这3个。注意GM本身的混色模式决定了半透明的东西画到全透明的表面时,颜色仍然会受到背景色的干扰(结果的不透明度值也有错误),必要时请使用blendmode ext (bm_one,bm_zero)。虽说用计算也能还原但存在精度问题。
另外这几个函数都存在显著的效率问题,如果需要连续大量获取,更推荐将surface的数据转移到buffer然后直接读buffer。由surface转移到的buffer数据结构是1像素→4字节,从左上角开始逐行进行,4字节的顺序无非就是RGBA、BGRA、ARGB、ABGR这几种,试一下就能试出来。
另外这几个函数都存在显著的效率问题,如果需要连续大量获取,更推荐将surface的数据转移到buffer然后直接读buffer。由surface转移到的buffer数据结构是1像素→4字节,从左上角开始逐行进行,4字节的顺序无非就是RGBA、BGRA、ARGB、ABGR这几种,试一下就能试出来。