任务是在具有 800 列和 600 行的图像上创建俄罗斯国旗图像。因此,国旗被分成三个相等的部分(顶部为白色,中间为蓝色,底部为红色)
这是我的代码:
#include <stdio.h>
int main() {
printf("P6\n");
printf("%d %d\n", 800, 600);
printf("255\n");
int width, heightWhite, heightBlue, heightRed, i, j;
unsigned char Rcolor, Bcolor, Gcolor;
width = 800;
heightWhite = 200;
heightBlue = 400;
heightRed = 600;
for (j = 0; j <= heightWhite; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 255;
Bcolor = 255;
Gcolor = 255;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
for (j = 201; j <= heightBlue; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 0;
Bcolor = 255;
Gcolor = 0;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
for (j = 401; j <= heightRed; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 255;
Bcolor = 0;
Gcolor = 0;
printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}
return (0);
}
但是当我查看我的程序生成的图像时,我注意到蓝色和红色条的顶部不是完全水平的(它看起来像是使蓝色和红色条的顶部高于前面的像素)我不知道为什么我会得到这个。我已经在 Gimp 上运行了我的讲师的 ppm 文件(这是我用来查看 ppm 文件的文件),并且这些行应该是完全水平的。有任何想法吗?
(我不确定如何附加我的 ppm 文件,但它应该是这样的:http ://users.csc.calpoly.edu/~dekhtyar/101-Fall2013/labs/lab7.html )(这是第一个标志)