Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 12:32   #1
Alenkakiss
 
Регистрация: 08.01.2007
Сообщений: 5
По умолчанию Заливка Гуро

Нужно реализовать закраску методом Гуро. Среда программирования - C++Builder 6. Не знаю, как подключить графику. И почему данный код не компилируется? Заметила, что не определенны некоторые переменные. Определила, теперь застряла на данной ошибке: Constant expression required (Выдает на строчке с xpos[y][side]=x; xpos я определила как double, но не знаю, правильно или нет?)
Код:
void drawedge(int x1, int y1, int z1, int x2, int y2, int z2, char color)

        {

          int   side = 0;

          float temp = x1;

          float xslope = (x2-x1)/(y2-y1);

          float zslope = (z2-z1)/(y2-y1);

          if (y1 >= y2)

          {

            side = 1;

            x1 = x2;

            x2 = temp;

            temp = y1;

            y1 = y2;

            y2 = temp;

            temp = z1;

            z1 = z2;

            z2 = temp;

          }

          for (y=y1;y<=y2;y++)

          {

            xpos[y][side]=x;

            x1 += xslope;

            zpos[y][side]=z;

            z1 += zslope;

          }

        }

 

        void hline(int x1,int x2,int y,char c)

        {

          int i;

          float zinc;

          float z1,z2;

          char  ch;

 

          z1 = zpos[y][0];

          z2 = zpos[y][1];

          if (x1>x2)

          {

            i=x1;

            x1=x2;

            x2=i;

            i=z1;

            z1=z2;

            z2=i;

          }

          zinc = (z2-z1)/(x2-x1);

          for (i=x1;i<=x2;i++)

          {

            BufPixel(i,y,z1+c);

            z1 += zinc;

          }

        }

 

        void gpoly(int x1,int y1,int z1,int x2,int y2,int z2,int x3,int y3,int z3,char c)

 

        {

          if (y1<=0)

            y1=0;

          if (y2<=0)

            y2=0;

          if (y3<=0)

            y3=0;

 

          if (y1>=200)

            y1=199;

          if (y2>=200)

            y2=199;

          if (y3>=200)

            y3=199;

 

          if (x1<=0)

            x1=0;

          if (x2<=0)

            x2=0;

          if (x3<=0)

            x3=0;

 

          if (x1>=320)

            x1=319;

          if (x2>=320)

            x2=319;

          if (x3>=320)

            x3=319;

 

          drawedge(x1,y1,z1,x2,y2,z2);

          drawedge(x2,y2,z2,x3,y3,z3);

          drawedge(x3,y3,z3,x1,y1,z1);

 

          miny=y1;

          if (miny > y2)

            miny=y2;

          if (miny > y3)

            miny=y3;

          maxy=y1;

          if (maxy < y2)

            maxy=y2;

          if (maxy < y3)

            maxy=y3;

 

          for (y=miny;y<=maxy;y++)

            hline(xedge[y][0],xedge[y][1],y,c);

        };
Alenkakiss вне форума Ответить с цитированием
Старый 07.03.2010, 12:48   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
            xpos[y][side]=x;
Поскольку этот массив в функции нигде не объявлен, то компилятор считает, что это и есть объявление и потому думает, что здесь нужны константы. Вам надо либо объявить массив где-то внутри функции, либо передавать его (с помощью указателя) в качестве аргумента функции.

В C++ Builder'е графику в консоли можно использовать разве что с помощью WinAPI. Если дело происходит на форме, то к пикселю формы можно обратиться таким образом:
Код:
Form1 -> Canvas -> Pixels[X][Y] = TColor(0x00FF88FF);
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Градиентная заливка APi функция GradientFillRect в Delphi Roberto Win Api 7 11.04.2008 13:34
Заливка с допуском devi409 Общие вопросы Delphi 11 15.10.2007 06:57