简易的坐标标定法,做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
效果:
看了许久才看明白脚本。。果然我还是太渣了吗。。。
不过好厉害的样子。。不过我一般不用绝对坐标的呢嗯 ← ←一般用QQ截图来定坐标... 居然只有30行=A=
(←这渣虽然不懂脚本但还是能看懂原理...
太触了{:nm46:}.. 对BMP处理直接略过
直接读取好然后依次getpixel好像的确很快=w=
但是!如果游戏画面本身就有这个“特殊颜色”——
页:
[1]