如何在C ++中获取图像中像素的颜色(SFML)

时间:2018-07-10 03:15:57

标签: c++ visual-c++ sfml

我正在研究一个简单的赛车游戏,您在赛道上驾驶汽车。 轨道是灰色的,背景是绿色的,并且只要我到达给定点(汽车的前部)的颜色不是灰色,汽车就应该停止行驶,因为它走出了轨道。

但是轨道不是用sfml绘制的,而是我制作的下载图像。 那么,只要rgb值匹配,有什么方法可以获取图像上像素的颜色?

这是执行此操作的伪代码:

游戏运行时
获得颜色(汽车x值,汽车y值)
如果颜色不是灰色
汽车停靠

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用适当的方法sf::Image::getPixel来获取sf::Color中像素的sf::Image。它需要X和Y坐标。

示例:

sf::Image track;

if (!track.loadFromFile("track.jpg"))
{
   // oops, loading failed, handle it
}

sf::Color color = track.getPixel(0, 0); // gets the color of the upper left corner pixel

答案 1 :(得分:0)

您将要使用sf :: Image的getPixel(int x,int y)函数。您的伪代码将如下所示:

sf::Image track;
sf::Color grey_color; // You'll need to define what the grey color is.
                      // Take sf::Color(100, 100, 100) as an example.
if (!track.loadFromFile("track.jpg")) {
    std::cout << "Uhoh" << std::endl;
}

while (gameIsRunning) {
    sf::Color color_at_car = track.getPixel(car.getx(), car.gety());
    if (color_at_car != grey_color) {
        car.stop();
    }
}

希望这会有所帮助!