Ruby200 发表于 2013-5-6 11:50:50

简易的坐标标定法,做UI时可用

本帖最后由 Ruby200 于 2013-5-6 12:44 编辑

有时候自己做UI脚本需要确定血槽等的位置,为了方便也可以用下面的方法

如果你有PS,FW等工具,可能已经自带了这个功能,又或者使用图层,就无需用原图了

首先截个图,外框多一点少一点无所谓,但是需要的区域要截图出来,然后左上角点上某个特殊颜色,其他需要标记的地方也点上特殊颜色,以后,就用这个特殊颜色来表示要知道坐标的点。

这个画图就能完成,为了精确也可以开放大模式或者使用其他工具


记得把VA绘图区域左上角的位置也点出来,以后方便计算


然后用下面的脚本把这个图片中的特殊点的位置提取出来,然后进一步利用吧
class Notation
attr_accessor :data
def initialize(bmp)
    @bmp = Bitmap.new(bmp)
    @addr = DL::dlwrap @bmp
    @addr = DL::CPtr[@addr].unpack("L").first
    @addr = DL::CPtr[@addr].unpack("L").first
    @addr = DL::CPtr[@addr].unpack("L").first
    @addr = DL::CPtr[@addr]
    @data = {}
end

def dispose
    @bmp.dispose   
end
   
def getdata(color = nil)
    color ||= @bmp.get_pixel(0, 0)
    y = @addr
    u = .map(&:to_i).pack("C*")
    @data ||= begin
      a = []
      0.step(y.length, 4){|x|
      a << x / 4 if y == u
      }
      width, height = @bmp.width, @bmp.height
      a.map!{|c| }.sort!
      a
    end
end

end


测试

x = Notation.new("1.png")
msgbox x.getdata
x.dispose


效果:

lbq 发表于 2013-5-6 12:26:49

看了许久才看明白脚本。。果然我还是太渣了吗。。。
不过好厉害的样子。。不过我一般不用绝对坐标的呢嗯

烁灵 发表于 2013-5-6 12:28:12

← ←一般用QQ截图来定坐标...

Sonic1997 发表于 2013-5-6 13:01:38

居然只有30行=A=
(←这渣虽然不懂脚本但还是能看懂原理...
太触了{:nm46:}..

satgo1546 发表于 2013-5-6 18:16:18

对BMP处理直接略过
直接读取好然后依次getpixel好像的确很快=w=
但是!如果游戏画面本身就有这个“特殊颜色”——
页: [1]
查看完整版本: 简易的坐标标定法,做UI时可用