Я делаю псевдо-рисование на C ++ (почти нулевой опыт в C ++) с использованием библиотеки SFML.Я сделал отдельную функцию для редактирования изображения и «инструмент 0» в основном карандаш.Когда я пытаюсь передать этот аргумент моей функции, он не работает, но когда я делаю то же самое, не передавая его функции drawOnImage, он работает нормально.Я вырезал лишние части в представленном коде
Я пытался передать x и y позиции мыши как отдельные аргументы (без использования Vector), но это не помогает
void drawOnImage(sf::Color color, int tool, sf::Texture canvas, sf::Image image, sf::Vector2i vector);
int main()
{
sf::Image image;
image.create(windowWidth, windowHeight, sf::Color::White);
sf::Texture canvas;
sf::Color currentColor = sf::Color::Black; // Color
int currentTool = 0; // instrument that is currently chosen
sf::Sprite sprite;
int mousedown = 0;
mainWindow.setFramerateLimit(60);
canvas.loadFromImage(image);
sprite.setTexture(canvas);
while (mainWindow.isOpen())
{
canvas.loadFromImage(image);
sf::Event event;
while (mainWindow.pollEvent(event))
{
// "close requested" event: we close the window
if (event.type == sf::Event::Closed)
mainWindow.close();
else if ((event.type == sf::Event::MouseMoved) && (mousedown == 1))
{
canvas.update(mainWindow);
drawOnImage(currentColor, currentTool, canvas, image, sf::Mouse::getPosition(mainWindow));
}
else if (event.type == sf::Event::MouseButtonPressed)
{
mousedown = 1;
drawOnImage(currentColor, currentTool, canvas, image, sf::Mouse::getPosition(mainWindow));
//image.setPixel(sf::Mouse::getPosition(mainWindow).x, //IT WORKS but drawOnImage does not
sf::Mouse::getPosition(mainWindow).y, sf::Color::Black);
}
void drawOnImage(sf::Color color, int tool, sf::Texture canvas, sf::Image image,sf::Vector2i vector) {
if (tool == 0) {
image.setPixel(vector.x,vector.y, sf::Color::Black);
}
}
Я уверен, что я просто не знаю некоторых функций c ++, таких как передача адреса объекта, а не имени, но я не могу понять это сам