int Pix_V=255; int Pix_C=255; int dx, dy, sx, sy, kl, swap; long incr1, incr2; long s; /* Текущее значение ошибки */ long s_max; /* Макс значение ошибки */ int color_tek; /* Текущий номеp оттенка */ int xt; sx=0; if ((dx=xk-xn) < 0) {dx=-dx; --sx;} else if (dx>0) ++sx; sy=0; if ((dy=yk-yn) < 0) {dy=-dy; --sy;} else if (dy>0) ++sy; swap=0; if ((kl=dx) < (s=dy)) {dx=s; dy=kl; kl=s; ++swap;} s=(long)dx*(long)Pix_V; incr1=2l*(long)dy*(long)Pix_V; incr2=2l*s; s_max=incr2-incr1; color_tek=Pix_V; Pix_C=0; if (dx)color_tek=(int)((((long)Pix_V*(long)dy)/(long)dx)/2l); for(int i=xn*10; isetPixel(i, j, qRgba(0,0,0,Pix_C+color_tek)); } } while (--kl >= 0) { if (s >= s_max) { if (swap) xn+= sx; else yn+= sy; s-= incr2; } if (swap) yn+= sy; else xn+= sx; s+= incr1; if (dx) color_tek= s / dx /2; for(int i=xn*10; isetPixel(i, j, qRgba(0,0,0,Pix_C+color_tek)); } } /* Однотонная закраска строки многоугольника макс цветом */ xt=xn; while (++xt <= xk) { for(int i=xn*10; isetPixel(i, j, qRgba(0,0,0,Pix_C+Pix_V-1)); } } } }