• Slimer软工课设日报-2016年7月1日


    今天主要解决了全屏状态下按钮无法顺利点击的问题

    起初我以为是程序运行代码过多导致的卡顿,多点几次才能顺利交互,后来多调试了几次发现是判定区的问题

    全屏后本来按钮的判定区是按照窗体比例放大且移动到指定位置范围的,但实际全屏后所有按钮的判定区都向上偏移了,所以才导致点击原来的位置没有反映

    原先的按钮的判定区的xy范围是根据背景的像素点加上当前的窗口大小换算的,具体换算函数如下:

    double changex(int x) {
        return x*2.0 / WindowWidth -1;
    }
    
    double changey(int y) {
        return y*2.0 / WindowHeight-1;
    }
    坐标换算

    此时的窗口大小WindowWidth和WindowHeight是包含了上面标题框的,所以后面有个-1

    然而当用了全屏函数glutFullScreen()后,上面的标题框没了,也不算在当前窗口大小里了,自然所有按钮判定区都向上移动了

    所以需要一个全屏标识符,来区分此时是窗口化还是全屏,来根据此时实际游戏画面内容的大小来改变窗口大小,具体更改了getWindowsSize()函数

    void getWindowsSize() {                                    //记录当前窗口大小*                                    
        HWND windows = GetActiveWindow();                    //获取当前活动窗口句柄
        RECT rc;
        GetWindowRect(windows, &rc);                        //获取窗口大小信息
        
        if(Fullscreen==true){
            WindowHeight = rc.bottom - rc.top;                //改变当前窗口高度(全屏)
            WindowWidth = rc.right - rc.left;                    //改变当前窗口宽度
        }
        else {
            WindowHeight = rc.bottom - rc.top - 39;                //改变当前窗口高度(窗口化)
            WindowWidth = rc.right - rc.left - 16;                    //改变当前窗口宽度
        }
    }
    getWindowsSize()
  • 相关阅读:
    JAVA将list转化为xml文件
    Hibernate 配置文件属性之 级联操作cascade 性能优化inverse
    Hibernate 一对多关系操作
    Hibernate 原生SQL操作
    Hibernate 之 Criteria
    Hibernate HQL查询
    Hibernate使用getCurrentSession() 的配置
    Hibernate 主键生成策略
    hibernate(一)--简单示例
    适配器模式
  • 原文地址:https://www.cnblogs.com/hesoyamlyf/p/5634222.html
Copyright © 2020-2023  润新知