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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 21:59   #1
Kovy
Пользователь
 
Регистрация: 23.01.2011
Сообщений: 11
По умолчанию графика в Borland C++

Помогите плз изменить данную программу так, что бы ячейки не заштриховывались в соответствии с нужной интенсивностью, а закрашивались разными оттенками одного цвета или на крайний случай разными цветами от более светлого, до более темного в соответствии с нужной интенсивностью.

Цитата:
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <dos.h>


#define N 20

int deltax,deltay;



void initg()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "..\\BGI");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
setcolor(getmaxcolor());
}

void net()
{
int i=0, x=getmaxx(),y=getmaxy();
while(i<x)
{
setcolor(BLUE);
line(0,i,x,i);
line(i,0,i,y);
i+=N;
}
setcolor(RED);
line(0,y/2,x,y/2);
line(x/2,0,x/2,y);
line(0,y/2-20,x,y/2-20);
line(x/2-20,0,x/2-20,y);
}

void pixel(int x,int y,int c)
{
setfillstyle(SOLID_FILL, 2);
bar(x*N+deltax*N,-y*N+deltay*N,x*N+N+deltax*N,-y*N+N+deltay*N);

}

void PutPixel(int x,int y,int z)
{
if(z==0)
{
return;
}
for(double i=0;i<=N;i+=(double)N/( (double)z) )
{
setcolor(RED);
line(x*N+i+deltax*N,-y*N+deltay*N,x*N+i+deltax*N,-y*N+N+deltay*N);
line(x*N+deltax*N,-y*N+deltay*N+i,x*N+N+deltax*N,-y*N+deltay*N+i);
}
}

void zat(int x1,int y1,int x2,int y2, int k)
{
int I=5 ;
double X,Y,Px,Py,t,E,Emax,i;
X= x1;
Y= y1;
Px= x2 - x1;
Py= y2 - y1;
if(Px>=Py)
{
t= I*Py / Px;
E= I/2;
Emax= I - I*Py / Px;
i= Px;
if(k==1)PutPixel(X, Y, E );
if(k==0)PutPixel(-X, Y, E );
while (i-->0)
{
if (E >= Emax)
{
X= X + 1;
for(int dop=X;dop<Px+x1+1;dop++)

if(k==0)pixel(-dop,Y,9);
else pixel(dop,Y,9);
Y= Y + 1;
E = E- Emax;
}
else
{
X= X + 1;
E = E + t;
}
if(k==1)PutPixel(X, Y, E );
if(k==0)PutPixel(-X, Y, E );
}
}
else
{
t= I*Px / Py;
E= I/2;
Emax= I - I*Px/Py;
i= Py;
if(k==1)PutPixel(X, Y,I - E+1);
if(k==0)PutPixel(-X, Y,I - E+1);
while (i-->0)
{
for(int dop=X+1;dop<Px+x1+1;dop++)
if(k==0)pixel(-dop,Y,9);
else pixel(dop,Y,9);
if (E >= Emax)
{
Y= Y + 1;
X= X + 1;
E = E - Emax;
}
else
{
Y = Y + 1;
E = E + t;
}
if(k==1)PutPixel(X, Y,I - E+1);
if(k==0)PutPixel(-X, Y,I - E+1);
}
}
}


void main()
{
initg();
deltax=getmaxx()/(N*2);
deltay=getmaxy()/(N*2);
net();
int x1, y1, x2, y2, k;
printf("Vvedite x1y1: \n");
scanf("%d %d",&x1, &y1);
printf("Vvedite x2y2: \n");
scanf("%d %d",&x2, &y2);
if(y1<y2)zat(x1,y1,x2,y2,1);
if(y1>y2)zat(-x2,y2,-x1,y1,0);
line(x1*N+deltax*N,(-y1+1)*N+deltay*N,x2*N+N+deltax*N,(-y2-1)*N+N+deltay*N);


getch();
closegraph();
}
Kovy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Borland C++ morozov@ Помощь студентам 4 14.12.2010 22:52
Графика в Borland C++ 3.1 Dimenty_Ts Помощь студентам 0 15.05.2010 15:44
не могу запустить ехешник ,Borland 5 и Borland 6 error_13 Общие вопросы C/C++ 0 31.01.2010 14:04
Графика в Borland C++ v3.1 под DOS egos Помощь студентам 0 25.06.2009 00:57
Графика в Borland C под DOS Goldmane Помощь студентам 0 09.04.2009 22:58