在SFML窗口中创建网格可以通过以下步骤实现:
#include <SFML/Graphics.hpp>
sf::RenderWindow
类创建一个窗口对象,并设置窗口的大小和标题。sf::RenderWindow window(sf::VideoMode(width, height), "Grid Window");
int rows = 10;
int cols = 10;
int cellSize = 50;
sf::Color gridColor = sf::Color::Black;
// 清空窗口
window.clear();
// 绘制垂直线
for (int i = 0; i <= cols; i++) {
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(i * cellSize, 0), gridColor),
sf::Vertex(sf::Vector2f(i * cellSize, height), gridColor)
};
window.draw(line, 2, sf::Lines);
}
// 绘制水平线
for (int i = 0; i <= rows; i++) {
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(0, i * cellSize), gridColor),
sf::Vertex(sf::Vector2f(width, i * cellSize), gridColor)
};
window.draw(line, 2, sf::Lines);
}
// 显示绘制的内容
window.display();
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
}
完整的示例代码如下:
#include <SFML/Graphics.hpp>
int main() {
int width = 800;
int height = 600;
int rows = 10;
int cols = 10;
int cellSize = 50;
sf::Color gridColor = sf::Color::Black;
sf::RenderWindow window(sf::VideoMode(width, height), "Grid Window");
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
// 绘制垂直线
for (int i = 0; i <= cols; i++) {
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(i * cellSize, 0), gridColor),
sf::Vertex(sf::Vector2f(i * cellSize, height), gridColor)
};
window.draw(line, 2, sf::Lines);
}
// 绘制水平线
for (int i = 0; i <= rows; i++) {
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(0, i * cellSize), gridColor),
sf::Vertex(sf::Vector2f(width, i * cellSize), gridColor)
};
window.draw(line, 2, sf::Lines);
}
window.display();
}
return 0;
}
这是一个简单的示例,通过绘制垂直和水平线来创建网格。你可以根据需要调整网格的行数、列数、单元格大小和颜色。
领取专属 10元无门槛券
手把手带您无忧上云