如何将按钮缩放到其原始纵横比?

时间:2019-05-30 06:13:02

标签: c++ user-interface cocos2d-x

我的应用程序的resolutionPolicy设置为EXACT_FIT,因此它覆盖了屏幕的整个区域,从而产生了拉伸的UI。有些按钮的原始长宽比是圆形的,但现在它们的形状已变为椭圆形。因此,我无法弄清重新使它们变为圆形所需的缩放比例。

要使它们在每个分辨率上都是圆形的,我需要根据屏幕的宽度和高度来选择合适的缩放比例,但是我无法准确地找出它。

std::string buttonNormalIcon = "menu/back.png";
    std::string buttonPressedIcon = buttonNormalIcon;
    cocos2d::ui::Button* button = ui::Button::create();
    std::string buttonDisabledIcon = buttonNormalIcon;
    if(buttonDisabledIcon.find(".png") != std::string::npos) {
        buttonDisabledIcon = buttonDisabledIcon.insert(buttonDisabledIcon.find(".png"), "_disabled");
    }

// This is the part which needs to be figured out.
float scalingFactor = 1.0;
backButton->setScale(scalingFactor);

我也想根据X和Y轴进行缩放。

在最终应用中,按钮应为圆形。

1 个答案:

答案 0 :(得分:0)

由于用例要求您根据屏幕的宽度和高度缩放按钮,因此您可以编写类似于以下内容的代码:

const Size& screenSize = Director::getInstance()->getOpenGLView()->getFrameSize();

//define a CONST_1 float variable and an appropriate scale CONST_1_SCALE
if ((screenSize.width / screenSize.height) > CONST_1) { 
    backButton->setScale(CONST_1_SCALE);
} else if ((screenSize.width / screenSize.height) > CONST_2) { 
    backButton->setScale(CONST_2_SCALE);
} else {
   //write code to scale the button based on other ratios 
   ...........
}

基于上述逻辑,您可以根据需要动态缩放按钮。