Project1

标题: 如何取得屏幕上某点的颜色 [打印本页]

作者: 我为鱼肉    时间: 2023-1-4 09:46
标题: 如何取得屏幕上某点的颜色
本帖最后由 我为鱼肉 于 2023-1-25 22:42 编辑

不是bitmap某点的颜色,就纯粹(640*480窗体)上任意一点的颜色

此贴终结,已经找到了解决方法。
作者: alexncf125    时间: 2023-1-4 10:21
本帖最后由 alexncf125 于 2023-1-4 10:33 编辑

不是bitmap怎取颜色?(可能有方法, 不过我不知道

先加上snap_to_bitmap脚本(三选一)
https://rpg.blue/thread-111145-1-1.html
https://rpg.blue/thread-111502-1-1.html
https://rpg.blue/thread-376700-1-1.html(4L)

再使用以下脚本
bitmap = Graphics.snap_to_bitmap          #以位图对象的形式获取当前的游戏画面。
color = bitmap.get_pixel(某点的X坐标, 某点的Y坐标)          #获取点 (x, y) 的颜色。
bitmap.dispose          #生成的位图不再需要时,必须立刻释放位图。
p color          #输出获取了的颜色。
作者: RPGzh500223    时间: 2023-1-5 12:33
鼠标与精灵相关:https://rpg.blue/thread-476558-1-1.html

至于标题的问题:
方法1:基本如楼上,最多就是Bitmap#get_pixel用Win32的相关API替换一下
方法2:rmxp的滤镜,论坛搜索 “BitmapEnhance 2.0”

作者: ppspssss    时间: 2023-1-5 13:18
以下代码为判断鼠标 在 精灵内 和 获取 鼠标像素颜色是否在精灵图片上 , 只可参考
RUBY 代码复制
  1. #已知$mx为鼠标x坐标, $my为鼠标y坐标 @按钮_位图为一个精灵
  2.     if ($mx >= @按钮_位图.x and $mx <= @按钮_位图.x+@按钮_位图.bitmap.width) and ($my >= @按钮_位图.y and $my <= @按钮_位图.y+@按钮_位图.bitmap.height)
  3.        x_b = @按钮_位图.x-$mx
  4.        y_b = @按钮_位图.y-$my
  5.       pixel = @按钮_位图.bitmap.get_pixel(x_b.abs,y_b.abs)
  6.  
  7.       if pixel == Color.new(0,0,0,0) or pixel == Color.new(255,255,255,0)
  8. return
  9. #除了透明像素之外, 在精灵图大小以外的地方也会判断会另一种颜色, 因此不只一种 , 则满足为不在精灵图片之上


顺序之前我也想了很久 , 好像在编程肯叫 "队列" (关键字)   或者搜 "数组队列" , 不过我自己看不懂
想知道生成顺序, 我方法是用一个数组用于 单独 纪录顺序,  生成精灵时使用push把标识加入到数组里,  这样在顺序越后的为越新  再用for循环偏历"纪录顺序数组"可知道哪个精灵是新旧, 如果"纪录顺序数组" 内顺序有变化, 也可以把数组内顺序进行对调






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