Project1

标题: 获取图像问题 [打印本页]

作者: 地狱的蓝炎    时间: 2008-10-3 06:47
标题: 获取图像问题
最近想用一下截图的功能,类似于截图存档。
但是好像看不太懂那个脚本,谁能教我一下?
最好是能把代码写出来,光说不太好懂......... [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 地狱的蓝炎    时间: 2008-10-3 07:10
可能没说明白..........
就是在一个文件夹下存入一个图片,方便以后使用。 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『请善用编辑功能避免连贴。』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: ONEWateR    时间: 2008-10-3 07:13
http://rpg.blue/web/htm/news109.htm
作者: 地狱的蓝炎    时间: 2008-10-3 18:50
以下引用ONEWateR于2008-10-2 23:13:45的发言:

http://rpg.blue/web/htm/news109.htm

那个........我想知道的事怎么实现的,不是脚本.........
这玩意需要两个DLL文件,肯定是看不懂的说...........
我想用的就是这个脚本的功能,但是实在是看不懂..........
有谁能给解释一下?
作者: dbshy    时间: 2008-10-3 18:57
写了几个注释,你应该能看懂

module Screen  
  @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
  @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  module_function
    def shot(file = "screenshot", typ = 2)
    # to add the right extension...

   #保存图片的格式
    if typ == 0
      typname = ".bmp"
    elsif typ == 1
      typname = ".jpg"
    elsif typ == 2
      typname = ".png"
    end   
    file_index = 0
   
   #保存的位置

    dir = "Graphics/Pictures/"   
    #生成文件名
    file_name = dir + file.to_s + typname.to_s   

     #截图
    @screen.call(0,0,640,480,file_name,handel,typ)
  end
  
#获取窗口句柄

  def handel
    game_name = "\0" * 256

    @readini.call('Game','Title','',game_name,255,".\\Game.ini")
    game_name.delete!("\0")
    return @findwindow.call('RGSS Player',game_name)
  end
end
作者: 地狱的蓝炎    时间: 2008-10-3 19:23
的确...........
好像差不多看懂了。
但是那个module Screen  是什么意思?脚本中只有这个没有类的声明,这是什么意思?
还有,to_s是什么意思?在帮助文件中能查到不少意思,不知道在这里是指什么。
作者: 八云紫    时间: 2008-10-3 19:30
to_s 转换成字符串

a = 1;
a.to_s; #=> "1"

[LINE]1,#dddddd[/LINE]

module 这个是定义模块的关键字。
作者: 分子轨道理论    时间: 2008-10-3 19:32
以下引用地狱的蓝炎于2008-10-3 11:23:36的发言:

的确...........
好像差不多看懂了。
但是那个module Screen  是什么意思?脚本中只有这个没有类的声明,这是什么意思?
还有,to_s是什么意思?在帮助文件中能查到不少意思,不知道在这里是指什么。


MODULE SCREEN 是 定义的模块 = =

TO_S 如八云所说 转换成STRING  = =

作者: 地狱的蓝炎    时间: 2008-10-3 19:37
LS别重复别人的话 ==       拍飞
不过你要是能解释一下定义模块是什么意思就好了{/hx}
作者: IamI    时间: 2008-10-3 19:39
以下引用地狱的蓝炎于2008-10-3 11:37:33的发言:

LS别重复别人的话 ==       拍飞
不过你要是能解释一下定义模块是什么意思就好了

发现需要补习基础知识的人很多= =
模块可以看成里面全部是共有变量和共有方法的类。
作者: 八云紫    时间: 2008-10-3 19:43
模块和类差不多, 不过模块不需要创建实例, 模块里的变量都是对外可见的。

module A
  ABC = "abc";
end

p A::ABC #=> "abc"

[LINE]1,#dddddd[/LINE]

class A
  @abc = "abc";
  
  def read_abc
    return @abc;
  end

end

a = A.new;

p a.read_abc;  #=> "abc"
作者: 分子轨道理论    时间: 2008-10-3 19:43
以下引用地狱的蓝炎于2008-10-3 11:37:33的发言:

LS别重复别人的话 ==       拍飞
不过你要是能解释一下定义模块是什么意思就好了


我没重复 = =

低调,低调.....

这个我以前问过
http://rpg.blue/viewthread.php?t ... 10%2D3+11%3A42%3A10

module 的方法可以直接调用

class 里的必须要有该类的实例才能调用```

或者在内部调用```


另外我记得以前有个帖子说的很好,好象是IS*小雪的解答吧,你可以去看一下
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 地狱的蓝炎    时间: 2008-10-4 03:12
恩,明白了!!
谢谢各位高人的指点!!
八云紫大姐实在是太温柔了,每回说的都那么清楚,很照顾新人呀!
那个.......总共就一百分,分发了就没了........
相信各位分已经上万的就用不着了吧,发给需要的人吧!
当然,我是相当感谢各位的!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1