我必须画出双倍值更大的线,比如(3000.004500.45)。

CImg<unsigned char> img(800,800,1,3,20);
img.draw_line( 3000.00, 4500.45, 3478.567, 4500.45, RED);

但我想把屏幕大小限制在800x800
我想取点坐标的模数在800以内
就像
3000.00%800=600
我的屏幕能装600个。
但问题是,CPP不支持双值模量。
double a = 3000.00;
printf("%lf",a%800.0); //Expected 600 but exception
**Invalid operand of type double,double to binary operator%**

如何使用CImg将这些大点放在屏幕上?

最佳答案

所有这些都取决于您实际想要执行的操作:
如果只想看到800x800图像上绘制的部分线条,则不要执行任何操作。CImg<T>::draw_line()方法实现剪裁,它将自动为您完成这项工作。
如果你想在屏幕上画“随机”线,而不在乎在坐标上使用模会破坏原始线的外观,那么你可以使用模。在您的情况下,最好先将坐标转换为int,然后再使用%运算符:
img.draw_line( ((int)x0)%800, ((int)y0)%800, ((int)x1)%800, ((int)y1)%800, RED);
但请注意,将要绘制的线与原始线无关:执行模块不是绘制线的剪裁方法。

关于c - 如何使用CImg调整屏幕中的所有点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18778860/

10-11 06:32