如何使用CImg调整屏幕中的所有点

时间:2013-09-13 05:22:30

标签: c cimg

我必须绘制具有较大双重值的行,如(3000.00,4500.45)。

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

但我想将屏幕尺寸限制为800x800

我想在800点内采用Point的坐标模数 喜欢

  

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在屏幕上显示这些大点?

2 个答案:

答案 0 :(得分:1)

%余数运算符的操作数不能使用fmod (double numer, double denom)函数的双重(或浮动)。

答案 1 :(得分:1)

全部取决于您想要实际执行的内容:

  • 如果您只想查看800x800图像上绘制的线条部分,则不执行任何操作。 CImg<T>::draw_line()方法实现剪切,它将自动为您执行此操作。
  • 如果您想在屏幕上绘制“随机”线条并且不关心在坐标上使用模数会搞砸原始线条外观的事实,那么您可以使用模数。在您的情况下,最好先将坐标转换为int,然后再使用%运算符:

img.draw_line( ((int)x0)%800, ((int)y0)%800, ((int)x1)%800, ((int)y1)%800, RED);

但请注意,将绘制的线条 nothing 与原始线条无关:执行模数不是绘制线条的剪切方法。