SFML从入门到放弃(2) 图像和音频
SFML从入门到放弃(2) 图像和音频
精灵
精灵(sf::Sprite)就是截取纹理(sf::Texture)的一块 或者重复纹理贴图
初始化精灵和纹理的一些方法:
sf::Sprite init_sprite(const sf::Texture & tex){
sf::Sprite spr;
spr.setTexture(tex);//设置纹理
spr.setTextureRect(sf::IntRect(,,,));//选择纹理区域
spr.setColor(sf::Color(,,,));//设置颜色透明度
spr.setPosition(sf::Vector2f(,));//设置位置
spr.setRotation();//旋转
spr.setScale(sf::Vector2f(,));//设置大小
spr.setOrigin(sf::Vector2f(,));//设置中心点
return spr;
}
sf::Texture init_texture(const std::string &s){
sf::Texture tex;//纹理
if (tex.loadFromFile(s)) std::cout << "texture success\n";//打开图片作为纹理 s 为图片路径
tex.setSmooth(true); //平滑
tex.setRepeated(false); //重复 当选择的区域大于图片时是否重复
return tex;
}
初始化之后可以对精灵进行操作
spr.move(sf::Vector2f(,));//移动
spr.rotate();//旋转
spr.scale(sf::Vector2f(0.9,0.9));//大小
默认的旋转中心在精灵的左上角 可以通过setOrigin来改变
注意:精灵和对应的纹理要存在于同一个生命周期
通过window.draw()可以在屏幕上显示精灵
auto tex = init_texture("tex.png");
auto spr = init_sprite(tex);
window.draw(spr);
文字
文字(sf::Text)和精灵相似需要用字体(sf::Font)来初始化:
sf::Text init_text(const std::wstring & s,const sf::Font & font){
sf::Text text;
text.setString(s); //设置字符串
text.setFont(font); //设置字体
text.setCharacterSize(); //文字大小
text.setFillColor(sf::Color::Blue); //颜色
text.setStyle(sf::Text::Bold | sf::Text::Underlined | sf::Text::Italic | sf::Text::StrikeThrough);
//属性
return text;
}
sf::Font init_font(const std::string & s){
sf::Font font;
if (font.loadFromFile(s)) std::cout << "font success\n";
return font;
}
如果要显示中文字符的话要用宽字符串(wstring)
文字的显示也和精灵相似
auto font = init_font("font.ttf");
auto text = init_text(L"hello world!啦啦啦",font);
window.draw(text);
声音
声音(sf::Sound)的加载方式也是类似的,要加载(sf::SoundBuffer)
不过Sound是不可复制的
sf::SoundBuffer init_buffer(const std::string & s){
sf::SoundBuffer buf;
if (buf.loadFromFile(s)) std::cout << "buffer success\n";
return buf;
}
sf::SoundBuffer buf = init_buffer("buf.wav");
sf::Sound sou;
sou.setBuffer(buf);
sou.play(); // 播放音频
另外还有一个sf::Music是用来加载比较长的音乐
参考:https://www.sfml-dev.org/tutorials/2.5
by karl07
SFML从入门到放弃(2) 图像和音频的更多相关文章
- SFML从入门到放弃(3) 视角和碰撞检测
SFML从入门到放弃(3) 视角和碰撞检测 视角 window.draw();所画出的对象是在世界坐标的绝对位置. 视角可以选定在窗口中显示世界坐标下的的哪一个区域. sf::View init_vi ...
- SFML从入门到放弃(1) 窗口和交互
SFML从入门到放弃(1) 窗口和交互 创建一个新窗口: sf::RenderWindow window(sf::VideoMode(,),"new window"); 但是光创建 ...
- SFML从入门到放弃(0) 配置环境
SFML从入门到放弃(0) 配置环境 恩..开始划水..学sfml的时候顺便做点笔记什么的.. 安装 在linux里面打开终端 然后输入 sudo apt-get install libsfml-de ...
- 爬虫入门到放弃系列05:从程序模块设计到代理IP池
前言 上篇文章吧啦吧啦讲了一些有的没的,现在还是回到主题写点技术相关的.本篇文章作为基础爬虫知识的最后一篇,将以爬虫程序的模块设计来完结. 在我漫(liang)长(nian)的爬虫开发生涯中,我通常将 ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
- OpenStack从入门到放弃
OpenStack从入门到放弃 目录: 为何选择云计算/云计算之前遇到的问题 什么是云计算 云服务模式 云应用形式 传统应用与云感知应用 openstack及其相关组件介绍 flat/vlan/gre ...
- 绕过校园网的共享限制 win10搭建VPN服务器实现--从入门到放弃
一.开篇立论= =.. 上次说到博主在电脑上搭建了代理服务器来绕过天翼客户端的共享限制,然而经过实际测试还不够完美,所以本着生命不息,折腾不止的精神,我又开始研究搭建vpn服务器= =... (上次的 ...
- 《区块链:从入门到放弃》之obc安装步骤
obc安装步骤 朋友们可能会好奇,厨师不研究菜谱怎么改研究兵法了,哈哈,我原本是app出身,最近被安排去预研区块链和比特币技术,2个月下来,颇有斩获.期间得到IBM的CC同学指导我一步一步安装obc的 ...
随机推荐
- 数组和集合(二):List集合的使用总结
一.概述 · 继承collection接口,List代表一个元素有序.且可重复(包括null)的集合,集合中的每个元素都有其对应的顺序索引 · List默认按元素的添加顺序设置元素的索引 · 提供了一 ...
- FastDFS 分布式文件系统
1 学习目标 了解项目中使用FastDFS的原因和意义. 掌握FastDFS的架构组成部分,能说出tracker和storage的作用. 了解FastDFS+nginx上传和下载的执行流程 ...
- 开发 WebAPP 的几个前端框架(不断更新中)
http://mobileangularui.com/ http://ionicframework.com/ http://www.idangero.us/framework7/ (中文文档:http ...
- react-native init安装指定版本的react-native
C:\Users\ZHONGZHENHUA\imooc_gp\index.js index.js /** @format */ import React,{ Component } from 'rea ...
- Spring中通配符(转)
一.加载路径中的通配符:?(匹配单个字符),*(匹配除/外任意字符).**/(匹配任意多个目录) classpath:app-Beans.xml 说明:无通配符,必须完全匹配 classpath: ...
- [BAT] 通过批处理删除7天前的报告,并删除当前目录下的空文件夹
set reportPath=D:\AutomationReport cd /d %reportPath% forfiles /p %reportPath% /s /m *.xml /d -7 /c ...
- 实践作业4:Web测试实践(小组作业)每日任务记录5
(一)今日任务更新 本次小组作业均已完成! 本组文件最终pdf文件(文件稍大,请耐心等待加载):https://files.cnblogs.com/files/ruanshuo170204/Web测试 ...
- cmd 中连接mysql时报'mysql'不是内部或外部命令,也不是可运行的程序或批处理文件,该怎么办?
假设安装的mysql目录是D:\MySQL\MySQL_Server_5.5\第一种方法:如果你打开cmd后直接输入mysql是不行的,需要配置mysql的环境变量,那么就在环境变量中增加D:\MyS ...
- es-文档版本号,操作类型,分片选择
一.版本号: 在es中每个文档都有一个版本号,默认情况下,版本号都是随着每次对该文档的修改或者删除自增的,当然你也可以自己指定.有了这个文档号,我们可以像mysql 乐观锁一样,用来进行控制字我们文档 ...
- 从零开始学习前端JAVASCRIPT — 8、JavaScript基础COOKIE
1:通信协议 定义:通信协议是指双方实体完成通信或服务所必须遵循的规则和约定.协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到 ...