音视频代码模块
+ -

窗口与逻辑大小居中计算

2024-12-09 17 0

如窗口大小为WinCX,WinCY,实际逻辑的为BaseCX,BaseCY的图像显示在窗口中。
输出xy分别为起始的偏移位置,scale为缩放比例

200039720436

void GetScaleAndCenterPos(
                    int baseCX, int baseCY, //1920x1080
                    int windowCX, //848
                    int windowCY, //378
                    int &x, int &y,
                    float &scale)
{
    double windowAspect, baseAspect;
    int newCX, newCY;

    windowAspect = double(windowCX) / double(windowCY);
    baseAspect = double(baseCX) / double(baseCY);

    if (windowAspect > baseAspect) 
    {
        scale = float(windowCY) / float(baseCY);
        newCX = int(double(windowCY) * baseAspect);
        newCY = windowCY;
    } 
    else 
    {
        scale = float(windowCX) / float(baseCX);
        newCX = windowCX;
        newCY = int(float(windowCX) / baseAspect);
    }

    x = windowCX / 2 - newCX / 2;
    y = windowCY / 2 - newCY / 2;
}

0 篇笔记 写笔记

作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!