狂自私

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

按键精灵-搜索给定区域内最后一个符合颜色值的坐标

复制代码
Function get_lastPoint_coordinate_v2(left_x, left_y, right_x, right_y, color_value)
    //搜索给定区域的最后一个符合color_value颜色值的坐标,若是不存在,就返回-1,-1
    Dim result_x, result_y
    result_x = - 1 
    result_y = - 1 
    //若是给定的区域是反向区域,或者轴上存在重合,就结束函数
    If left_x >= right_x Then 
        get_lastPoint_coordinate_v2 = last_x
    End If
    If left_y >= right_y Then 
        get_lastPoint_coordinate_v2 = last_y
    End If
    
    right_down_result_x = - 1 
    right_down_result_y = - 1 
    left_down_result_x = - 1 
    left_down_result_y = - 1 
    right_up_result_x = - 1 
    right_up_result_y = - 1 
    left_up_result_x = - 1 
    left_up_result_y = - 1
    
    //分成4份,计算中点坐标
    center_x = left_x+ CInt((right_x-left_x)/2)
    center_y = left_y+CInt((right_y - left_y) / 2)
    //左上角
    FindColor left_x,left_y,center_x,center_y,color_value,intX,intY
    If intX > 0 And intY > 0 Then 
        left_up_result_x = intX
        left_up_result_y = intY
        If left_up_result_x > last_x Then 
            //更新实际需要的坐标值
            last_x = left_up_result_x
            last_y = left_up_result_y
            //避免下一次划分区域的时候又找寻到同一个坐标值
            left_up_result_x = left_up_result_x + 1
            left_up_result_y=left_up_result_y+1
        End If
    End If
    //右上角
    FindColor center_x,left_y,right_x,center_y,color_value,intX,intY
    If intX > 0 And intY > 0 Then 
        right_up_result_x = intX
        right_up_result_y = intY
        If right_up_result_y > last_y  Then 
            //更新实际需要的坐标值
            last_x = right_up_result_x
            last_y = right_up_result_y
            //避免下一次划分区域的时候又找寻到同一个坐标值
            right_up_result_x = right_up_result_x + 1
            right_up_result_y=right_up_result_y+1
        End If
    End If
    //左下角
    FindColor left_x,center_y,center_x,right_y,color_value,intX,intY
    If intX > 0 And intY > 0 Then 
        left_down_result_x = intX
        left_down_result_y = intY
        If left_down_result_x > last_x Then 
            //更新实际需要的坐标值
            last_x = left_down_result_x
            last_y = left_down_result_y
            //避免下一次划分区域的时候又找寻到同一个坐标值
            left_down_result_x = left_down_result_x + 1
            left_down_result_y=left_down_result_y+1
        End If
    End If
    //右下角
    FindColor center_x,center_y,right_x,right_y,color_value,intX,intY
    If intX > 0 And intY > 0 Then 
        right_down_result_x = intX
        right_down_result_y = intY
        If right_down_result_x > last_x Then 
            //更新实际需要的坐标值
            last_x = right_down_result_x
            last_y = right_down_result_y
            //避免下一次划分区域的时候又找寻到同一个坐标值
            right_down_result_x = right_down_result_x + 1
            right_down_result_y=right_down_result_y+1
        End If
    End If
    
    TracePrint "last_x:"&last_x & "last_y:"&last_y
    //如下排列顺序请把持不变。
    If right_down_result_x > 0 And right_down_result_y > 0 Then 
        //满足条件的坐标在右下角被找到,那么后续的函数调用也将在这个区域里面进行处理。
        get_lastPoint_coordinate_v2 right_down_result_x, right_down_result_y, right_x, right_y, color_value
    ElseIf right_up_result_x > 0 And right_up_result_y > 0 Then 
        //满足条件的坐标在右上角被找到,那么后续的函数调用也将在这个区域里面进行处理。
        get_lastPoint_coordinate_v2 right_up_result_x, right_up_result_y, right_x, center_y, color_value
    ElseIf left_down_result_x > 0 And left_down_result_y > 0 Then 
        //满足条件的坐标在左下角被找到,那么后续的函数调用也将在这个区域里面进行处理。
        get_lastPoint_coordinate_v2 left_down_result_x, left_down_result_y, center_x, right_y, color_value
    ElseIf left_up_result_x > 0 And left_up_result_y > 0 Then 
        //满足条件的坐标在左上角被找到,那么后续的函数调用也将在这个区域里面进行处理。
        get_lastPoint_coordinate_v2 left_up_result_x,left_up_result_y,center_x,center_y,color_value
    End If
End Function
复制代码

如上是函数get_lastPoint_coordinate_v2的定义,调用示例:

last_x = - 1 
last_y = - 1 

get_lastPoint_coordinate_v2 1050,461,1286,658,"00FFFF"

TracePrint last_x
TracePrint last_y

如调用所示,需要定义last_x 和last_y变量,用于函数将坐标值保存下来。

posted on   狂自私  阅读(59)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示