在CImg中,坐标系统被认为是从左上角开始的。 但是,我通常习惯于看到从左下角开始的坐标系统。 所以,每当我试图用坐标绘制三角形(10,100),(50,50),(100,100) 我把图画颠倒了。 是否可以翻转这个?我想要这个
但我发现了这个
答案 0 :(得分:2)
尽可能简单地说,每次为CImg指定y
值时,您需要先将坐标系从您想要的位置翻转到它提供的位置。也许最简单的方法是编写自己的函数,为您转换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
参数的库函数时起作用。
请记住,许多图形库使用这种坐标样式,通常是因为使用这种坐标系统进行缓冲区寻址要容易得多。如果你计划将来在计算机图形学方面做更多的工作,我建议学习直接使用这个坐标系,而不是试图强迫它更加数学化。