Для того, чтобы поместить его как можно проще, каждый раз, когда вы задаете y
значение CImg, вам нужно сначала перевернуть систему координат от того, что вы хотите, к чему это предложения. Возможно, самый простой способ сделать это было бы написать свою собственную функцию, которая преобразует значение y
для вас:
unsigned int flip_y(unsigned int y, unsigned int height) {
return height - y;
}
Это будет означать, что каждое место, куда вы должны указать y
, вы должны помнить, чтобы использовать функция:
img.draw_text(x, y, "hello world!", ...);
// becomes
img.draw_text(x, flip_y(y, img.height()), "hello world!", ...);
вполне понятно, что это было бы получить очень утомительно очень быстро, и забывая использовать flip_y
в одной ситуации может быть потребляющих достаточно времени, чтобы отследить и исправить.
В качестве альтернативы, вы можете сделать свой собственный подкласс CImg
и оборачивать все функции, которые принимают значения y
и переворачивают y
перед передачей значений к исходной CImg
методы. Это имеет то преимущество, что можно работать при передаче ссылок на ваш подкласс библиотечным функциям, ожидающим параметр CImg
.
Имейте в виду, что многие графические библиотеки используют этот стиль координат, как правило, потому что гораздо проще выполнять адресацию буфера с такой системой координат. Если вы планируете в будущем намного больше работать с компьютерной графикой, я бы рекомендовал учиться использовать эту систему координат напрямую, вместо того чтобы пытаться заставить ее более математически.
@bvalabas, любая помощь? Извините, пометка кто-то не работает! – web2dev