首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SFML 2.5中调整窗口大小时保持窗口的纵横比?

在SFML 2.5中,可以通过以下步骤来调整窗口大小并保持窗口的纵横比:

  1. 获取当前窗口的宽度和高度。
  2. 根据所需的纵横比,计算出新的窗口宽度和高度。
  3. 比较新的宽度和高度与当前窗口的宽度和高度,取较小的值作为最终的窗口大小。
  4. 计算出窗口的偏移量,以便将窗口居中显示。
  5. 使用sf::VideoMode类创建一个新的窗口模式对象,将最终的宽度和高度作为参数传递给构造函数。
  6. 使用sf::RenderWindow类的create函数重新创建窗口,将新的窗口模式对象作为参数传递给函数。
  7. 在窗口大小改变时,更新视图以适应新的窗口大小。

以下是一个示例代码,展示了如何在SFML 2.5中实现上述步骤:

代码语言:txt
复制
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Window");

    // 获取当前窗口的宽度和高度
    float currentWidth = window.getSize().x;
    float currentHeight = window.getSize().y;

    // 所需的纵横比
    float targetAspectRatio = 16.0f / 9.0f;

    // 计算新的窗口宽度和高度
    float newWidth = currentWidth;
    float newHeight = currentHeight;

    if (currentWidth / currentHeight > targetAspectRatio)
    {
        newWidth = currentHeight * targetAspectRatio;
    }
    else
    {
        newHeight = currentWidth / targetAspectRatio;
    }

    // 计算窗口的偏移量
    float offsetX = (currentWidth - newWidth) / 2.0f;
    float offsetY = (currentHeight - newHeight) / 2.0f;

    // 创建新的窗口模式对象
    sf::VideoMode newVideoMode(newWidth, newHeight);

    // 重新创建窗口
    window.create(newVideoMode, "SFML Window");

    // 更新视图以适应新的窗口大小
    sf::View view(sf::FloatRect(0, 0, newWidth, newHeight));
    view.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
    window.setView(view);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {
                window.close();
            }
        }

        window.clear();
        // 在这里绘制你的内容
        window.display();
    }

    return 0;
}

这段代码将创建一个窗口,并在窗口大小改变时保持纵横比。你可以根据需要修改窗口的初始大小、窗口标题以及绘制内容的部分。请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

三星折叠屏开发者设计指南揭秘

2.1 什么是Multi-resume 谷歌在Android 7.0 时代便支持了多窗口分屏功能,即多个应用可同时共享屏幕,但问题是多个应用无法同时使用,只有具有焦点应用才能保持在活动(resume)...从 Android P (9.0) 开始,谷歌提供了名为Multi-resume新功能,允许设备厂商在多窗口模式下保持所有可见应用处于活动状态,解决了分屏多个应用仅有一个能保持活动状态问题。...更多指引:布局优化,面面俱到 3.1 最大纵横 三星可折叠设备外屏将具有长纵横(21:9),请确保您应用程序支持长纵横。 详细适配方法请参考: 屏幕最大纵横适配指导。...可以利用配置限定符实现此目的,它允许系统根据当前配置(针对不同屏幕尺寸不同布局设计)自动选择合适资源。...应用连续性 应用连续性是折叠屏手机亮点,当在外屏和内屏之间切换时,应用保持运行状态,并会自动调整大小以匹配新布局。

4.1K40

《译 SFML Essentials 英文版》—— 《第一章》 SFML 入门

大家好,又见面了,我是你们朋友全栈君。 ---- 创建窗口 ---- 当你开始开发一款游戏时,你可能想做第一件事便是打开一扇窗口。在SFML中,这再容易不过了。...SFML每个类都位于该命名空间之下,该命名空间将SFML所有类与其他库中类区分开。 如果我们运行示例中代码,就不会看到太多内容。程序在创建窗口后立即退出。...还允许手动调整窗口大小 sf::Style ::Close 添加一个关闭按钮 sf::Style ::Fullscreen 这将以全屏形式打开窗口。...(event)) { } } 现在运行代码会产生更满意结果——可以移动窗口调整大小和最小化它。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.9K30
  • 【虚幻引擎】DTProjectSettings 蓝图获取基本项目配置插件使用说明 获取项目命名,项目版本,公司名,公司识别名,主页,联系方式

    本插件可以使用蓝图获取到项目的一些基本配置,获取:公司名、公司识别名、版权声明、描述、主页、许可条款、隐私政策、项目ID、项目命名、项目版本、支持联系方式、项目显示标题、项目调试标题信息、应保留窗口宽高比...、{BuildConfiguration} 或 {RHIName},它们将替换为指定文本)Get Should Window Preserve Aspect Ratio - 应保留窗口宽高比当用户调整小时...,游戏窗口是否应该保留其纵横。...Get Use Borderless Window - 使用无边框窗口游戏是否应该使用无边框 Slate 窗口而不是带有系统标题栏和边框窗口。...Get Allow Window Resize - 允许窗口重设大小在不使用全屏时,是否允许用户调整游戏使用窗口大小。

    13310

    深度学习目标检测从入门到精通:第一篇

    想法是我们在多个尺度上调整图像尺寸,并且我们依靠这样一个事实:我们选择窗口大小完全包含了某个调整过尺寸图像中目标。最常见情况是,图像被下采样(缩小),直到某些通常条件达到最小尺寸。...在这些图像上,运行固定大小窗口检测器。 在这样金字塔上有多达64层也是很常见。 现在,所有这些窗口被送到分类器以检测感兴趣目标。这将帮助我们解决大小和位置问题。 ? 还有一个问题,纵横。...许多物体可以以不同形状呈现,坐在一起的人将具有与站立的人或睡觉的人不同纵横。 我们稍后会在这篇文章中介绍。...SPP层将任意大小区域划分为恒定数量bins,并且在每个bin上执行最大池化(max-pooling)。由于bins数量保持不变,所以如下图所示产生恒定尺寸矢量。 ?...但是,当物体尺寸较小时,我们以精度来衡量,其差距就会扩大。 ? 选择正确目标检测方法是至关重要,取决于你正试图解决问题和设置。

    2.7K70

    让你高效工作Windows应用

    让你高效工作windows应用 今 天我将给大家介绍一些我个人用到这些Windows平台上效率神器们。...多标签页”Tabs 式浏览了吧,在同时打开多个网页时,使用标签页切换传统 Windows 多个窗口切换要方便许多,Clover 功能就是给资源管理器加上 Chrome 一样标签页。...支持多种图片格式缩放, JPG, PNG, GIF, BMP, TIFF 等。 2. 可以自由设置修改后宽度、高度、是否保留纵横等; 3. 保留原图 EXIF信息; 支持图片格式转换; 4....f.lux是一款全天候保护眼睛健康软件,它能随着一天时间变化自动调整你电脑显示器屏幕色温,过滤对人眼伤害最大蓝光,从而尽可能减少屏幕对眼睛所带来疲劳感。...它根据用户定义经纬度、邮编或城市名称所在位置以及一天当中时间来调整电脑显示器色温。软件被设计用来减少夜晚由使用电脑所产生睡眠紊乱和失眠现象,并在白天使人保持兴奋状态。

    1.8K80

    为长屏幕设备做好准备

    原文作者: Android 开发者平台 Fred Chung 最近几个月发布 Android 手机型号,全面屏,特长纵横(16:9 以上)和圆角设计都已成为了一种潮流( Pixel 2 XL...更大纵横屏幕可以带给用户强烈沉浸感,但与此同时那些还没有经过优化应用也就会更容易被用户感知到,这甚至会带来一些负面的体验,从而影响用户对开发者满意度。...触摸点击区和 UI 模块(:按钮)不对齐,从而困惑用户。 在圆角屏幕设备上全屏模式,任何非常靠近角落 UI 元素都可能位于弯曲可视角度区域之外。...如果响应式 UI 不适合您场景,作为最后一步,考虑按照以下方式声明最大支持纵横。 在特长屏幕设备上,兼容模式会将应用边缘显示空间以填充。...需要注意一点是最大支持纵横值只对不支持 resizableActivity Activity 才有效。

    76130

    AI加持竖屏沉浸播放新体验

    爱奇艺也是在做这样横竖视频播放拓展,所以如何在竖屏状况下播放现有的存量视频,对内容提供者应该提供什么样视频,都是需要解决问题。 ?...左边手机比例是3:4,我们会发现人物顶部帽子与底部衣服领口是不可见,而右边是9:16常见手机屏幕比例,它从纵轴上截取了当前视频整个画面,保证了视频纵横。 ?...设备比例都是9:16,从像素高度上是左侧视频要高要,我们可以发现在截取视频位置之后做一个缩放,保证了视频纵横,让画面内容在窗口上不出现拉伸。...总体原则是保证窗口纵横在原始图片中,以聚焦中心点为中心截取一块最大区域,同时保证做到画面内容不拉伸。 ?...放大窗口来源于从原视频中截取一个9:16小图片,渲染到一个9:16窗口,最终呈现就是这样效果。

    59320

    AI加持竖屏沉浸播放新体验

    爱奇艺也是在做这样横竖视频播放拓展,所以如何在竖屏状况下播放现有的存量视频,对内容提供者应该提供什么样视频,都是需要解决问题。...左边手机比例是3:4,我们会发现人物顶部帽子与底部衣服领口是不可见,而右边是9:16常见手机屏幕比例,它从纵轴上截取了当前视频整个画面,保证了视频纵横。...设备比例都是9:16,从像素高度上是左侧视频要高要,我们可以发现在截取视频位置之后做一个缩放,保证了视频纵横,让画面内容在窗口上不出现拉伸。...总体原则是保证窗口纵横在原始图片中,以聚焦中心点为中心截取一块最大区域,同时保证做到画面内容不拉伸。...放大窗口来源于从原视频中截取一个9:16小图片,渲染到一个9:16窗口,最终呈现就是这样效果。

    80460

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    锚以所述滑动窗口为中心,并与比例和纵横相关联。默认情况下我们使用三个尺度和三个宽高比,对WxH卷积特征图,通常情况下,总共有WHk锚。...我们希望我们方法对小数据集(PASCAL VOC)过度拟合风险更小。多尺度锚作为回归参考。我们锚设计提出了一种新解决多尺度(和纵横)方案。多尺度预测有两种流行方法。...第一种方法是基于图像/特征金字塔,DPM在多个尺度下调整大小。...第二种方法是在特征图上使用多个尺度(和/或纵横)滑动窗口。例如,在DPM中,使用不同滤波器大小(5x7和7x5)分别训练不同纵横模型。...在该数据集上仅使用三个具有一个纵横尺度(69.8%)就可以与使用三个具有三个纵横尺度一样好,这表明尺度和纵横比对于检测精度来说并不是解纠缠维度。

    3K21

    目标检测:选择性搜索策略(C++ Python)

    这将对成千上万图像块进行分类。   问题并没有到此为止。滑动窗口方法对于固定纵横比对象,例如人脸或行人是很好。...图像是三维物体二维投影,对象特征,纵横和形状根据所拍摄图像角度而显著变化。滑动窗口方法因为需要搜索多个纵横,因此变得非常昂贵。...在分割时我们认为相邻区域是彼此相似,基于一些标准,颜色、纹理等不同滑动窗口方法,我们正在寻找所有的像素位置和在所有尺度对象,区域算法工作分组像素到一个较小段数。...因此,提议最终数量滑动窗口方法少很多倍。这减少了我们必须分类图像块数量。这些生成区域建议具有不同尺度和长宽。   目前提出了几种区域建议方法,    1....一般在1000-1200建议是好足以让所有的正确区域建议。 ? 选择性搜索代码 让我们来看看如何在opencv中实现基于选择性搜索分割。

    3K70

    顾问必备修图小技巧1-如何用windows系统自带画图工具快速调整证件照背景色?

    做项目的朋友都会遇到一个问题,就是项目现场需要最新证件照,手头有存电子版证件照但是颜色需要调整,自己不会PS软件或自己本机也没有装PS,又懒得网上搜抠图工具,只要证件照要求不是太高,不妨使用Windows...系统自带画图工具调整背景色,简单快捷,如果你用多了画图工具,你会发现根本不需要用什么专业PS软件或抠图工具。...最快捷方式就是使用命令,Win+R打开运行窗口,直接输入:mspaint。任何软件工具或系统都有一套快捷键,而且基本通用。 2.修改背景尺寸。...进入画图工具后,先修改默认背景层尺寸,这里直接修改为2寸大小(以2寸大小证件照为例,2寸像素:413×626),点击“重新调整大小”,去掉“保持纵横”对勾,选择像素,修改尺寸为413×626即可。...---- 免责声明:本文所用视频、图片、文字涉及作品版权问题,请第一时间告知,我们将根据您提供证明材料确认版权并按国家标准支付稿酬或立即删除内容!

    4.7K30

    Android P 凹口屏支持,打造全面屏体验

    作者: Megan Potoski, Android 系统用户界面产品经理 智能手机发展至今,边框越做越窄,屏幕中横越做越大。...默认情况下,如果开发者在竖屏模式下未对状态栏设定任何特殊标志位,状态栏会根据屏幕缺口情况自行调整高度 (缺口高度 ≤ 状态栏高度),而应用内容则会显示在状态栏以下区域;在横屏和全屏模式下,系统会在应用窗口四周保留黑边...在适配过程中,您可调用 getDisplayCutout() 获取无显示凹口区外边距和包围盒值,并利用这些数值判断应用内容是否与缺口重合,以及是否需要重新调整内容位置。 ?...建议您选择一款配有凹口屏 Android P Beta 设备作为调试设备, Essential PH-1。 ?...如果您应用无法适应长屏幕纵横,您可以通过设置应用最大支持纵横,要求系统用黑色填充应用边缘显示空间。 希望以上内容能对您有所帮助,让您不惧 "刘海",只为更好体验!

    1.5K20

    Unity2D开发入门-UI 菜单页面

    它可以包含其他UI元素(文本、图片、按钮等),并通过设置位置和大小来控制布局。Panel可以用于创建复杂用户界面布局。...使用Canvas情况: 当你需要在游戏中创建用户界面时,你应该将Canvas作为UI元素容器。Canvas可以自动调整UI元素大小和位置,以适应不同屏幕分辨率和纵横。...当你需要在不同场景或屏幕之间切换时,Canvas可以帮助你保持UI一致性。你可以将Canvas放置在每个场景中,并在切换场景时保持状态。...你可以设置调整方式,根据内容最小或最大大小进行调整。这在需要根据内容自动调整大小滚动视图和弹出窗口中非常有用。...这些布局组件可以帮助你轻松地创建灵活用户界面,并根据需求自动调整元素位置和大小。你可以将它们与其他UI组件结合使用,以创建复杂界面布局。

    61540

    折叠屏上应用设计规范,了解一下?

    包括适当缩放以展示更多内容,示例中副标题和日期,以及较小组合技术,例如在紧凑型布局中对内容进行视觉分组并保持其相关性等。...△ 在屏上使用简单对话框 (右) 代替全屏对话框 (左) 尺寸类别 请记住,替换组件时,首先要满足用户功能性和人性化需求。找到调整界面的正确阈值,这是实现响应式界面的重要步骤。...关注设备形状和尺寸,有助于您打造出更加人性化体验。例如,在平板电脑或屏手机上,如果不完全调整握持姿势,人们可能很难触及屏幕顶部区域,因此请将重要操作和内容放在容易触及区域中。...△ 响应式界面可根据屏幕尺寸变化而调整内容布局 设想一下,当您调整浏览器窗口小时,如果浏览器回退了一个页面,或者重定向到另一个页面,又或者修改了历史记录,这种体验非常奇怪。...△ 平均分布在铰链两侧八栏网格 (蓝背景) 适配示例 现在我们来看如何在运行期间利用好折叠状态。Jetpack Window Manager 库提供了相应 API,可以检测应用窗口是否存在折叠。

    4.3K20

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    然而,在CNNs训练和测试中存在一个技术问题:目前流行CNNs要求固定输入图像大小(224×224),这限制了输入图像长宽和尺度。...3.1.4、整图表示精度提升接下来我们研究全图视图准确性。我们调整了图像大小,使min(w,h)=256,同时保持其宽高比。将SPP-net应用于这幅全图,计算全图分数。...top-1位错误率都通过全视图表示得到了降低。这显示了维护完整内容重要性。即使我们网络只使用正方形图像进行训练,它也能很好地推广到其他纵横。...因为我们只微调了fc层,所以训练非常快,在GPU上大约需要2个小时(不包括缓存前feature map,它大约需要1个小时)。同样,我们使用边界框回归对预测窗口进行后处理。...所以我们速度R-CNN快270倍。我们5-scale版本卷积每张图像需要0.293秒,因此R-CNN快49倍。我们卷积特征计算速度非常快,fc层计算时间占了相当比例。

    1.8K20

    使用c++SFML制作月圆之夜总集篇

    写在开头 重新以时间线形式整理一下去年使用c++SFML库制作月圆之夜(游戏程序设计大作业)开发过程,括号里面是新补充以及对一年前自己吐槽 因为是在大二转专业后做首次接触游戏开发后才做...另外,在游玩过程中发现直接拉边框修改游戏窗口大小会导致按钮响应不了,把按钮位置坐标改为百分窗口大小也没用,推测是按钮绘制完后,窗口大小改变会导致逻辑上按钮位置和画面上按钮位置不一样??...这里我找了将近4个 小时bug,一直到凌晨4点,终于以为找到问题了,在某个地方加了一行代码后,试了几次可以正常绘制了,第二天再一测试,发现昨天其实是洗牌洗和上次一样。。。...之前游戏窗口大小是可以被改变,我们在创建窗口时增加窗口样式来限制窗口大小 Uint32 windowStyle = sf::Style::Close | sf::Style::Titlebar;...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.3K10

    万字长文解构中国如何复刻 Sora:模型架构、参数规模、数据规模、训练成本

    NaViT(2023 年 7 月):以前 Tokenizer 一般只能处理固定分辨率和纵横,一般会在训练前把各种分辨率或纵横数据转换成系统能处理统一格式。...NaViT 主要解决了这个问题,可以处理不同分辨率和纵横视频数据。...Sora 技术博客强调了把视频数据转换成时空 Patch/Token,也强调了视频和图片联合训练,还强调了它能处理不同分辨率和纵横训练数据。...(分辨率、纵横、时长)统一支持 当然,任何新技术研发都是需要资源,希望中国 AI 界能够在 Sora 这类模型上投入真金白银,修出真功夫,炼出真模型。...高效编解码技术,高质量原生与再生数据,深度融合视频与语言模型,图片和视频联合训练以及各种格式(分辨率、纵横、时长)统一支持。

    1K10

    最新iOS设计规范七|10视觉规范(Visual Design)

    在整个APP中保持整体一致外观。通常,具有相似功能元素应该看起来是相似或者统一。 使用视觉重量和平衡来传达重要性。元素吸引眼球,而且看起来比较小元素更重要。...例如,如果您应用在纵向模式下显示图像网格,则不必在横向模式下显示与列表相同图像。相反,它可能只是调整网格尺寸。尝试在所有情况下保持可比体验。...十、视频(Video) 系统提供视频播放器可提供两种查看模式:全屏(纵横填充)和适合屏幕(纵横)。默认情况下,系统根据视频纵横选择观看模式,用户可以在播放期间切换模式。 全屏(纵横填充)模式。...始终以原生纵横显示视频内容。当视频内容使用嵌入式信箱或邮筒模式填充以符合特定纵横时,iOS无法根据用户选择观看模式正确地缩放视频。嵌入视频会使其在全屏模式和适合屏幕模式下显示得更小。...使用原生纵横还可以防止视频在边到边、非全屏环境中正确显示内容,比如iPad上画中画模式。

    8K30
    领券