PNM P6中的对角线未正确绘制

时间:2014-05-13 06:47:03

标签: c ppm

我目前正在为一项作业编写一个程序,该程序要求从标准PNM P6文件的左上角绘制一条完整的实心对角线(所有x = y)。我对文件I / O没有任何问题。

但是,我无法正确显示对角线。我不需要从角落处获得单条,实线,白线,而是在this picture中显示虚线包裹图像。

有没有人知道出了什么问题?

我的功能如下:

Image *
DiagonalWhite(Image *img)
{
    int i, j;

    for (i = 0; i < img->x; i++)
    {
        for (j=0; j < img->y; j++)
        {
            if (i==j)
            {
                img->data[i*img->y+j].red=255;
                img->data[i*img->y+j].green=255;
                img->data[i*img->y+j].blue=255;
            }
        }   
    }

    return img; 
}

1 个答案:

答案 0 :(得分:1)

你没有给出Image *img的任何定义,所以实际上这个问题无法自信地回答;但是,我假设你和昨天的Issues writing PNM P6做了同一个课程。

你在错误的方向上成倍增加。 img->y保存图片的高度。但是,由于您需要 span ,因此您应该使用img->x - 宽度 - 按i像素向下移动(后跟添加j像素以向右移动。

img->data[i*img->x+j].red=255; /* x, not y */

注意:这些属性的更好名称应为widthheight

注意:在widthheight的最小值上循环一次更容易,更快,并立即设置像素[i,j],而不是测试哪个'具有'相同的x和y位置。