مرحبا بالأعضاء الكرام
الجميع شاف موضوع بخصوص برنامج الرسم والرجاء اتا عملت كود رسمت في ال اساس وخليت يرسم مربع اذا ضغطت في الماوس
لكن واجهتني مشكله لم اعرف حلها الرجاء المساعد وبأسرع وقت
المشكله اني اريد عندما اضغط على صورة المثلث يصير لونه سكني انه مفعل
واذا ضغطت على كلمة text تصبح هي المفعله ويذهب التفعيل عن المربع وهكذا
والمشكله الثانيه اني لا اريد عندما اضغط فوق الأزرار ان يرسم لأنه ما يزال يرسم
هاد الكود والرجاء تعديل عليه
#include <glut.h> // automatically includes GL.h and glu.h
#include <GL/glut.h>
#include <iostream.h> // so we can do some output to the console
int nWidth=500;
int nHeight=500;
void myinit(void)
{
/* Set up attributes */
glClearColor(1.0, 1.0, 1.0, 0.0); /* black background */
/* set up viewing projection*/
/* 500 x 500 window with origin lower left */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 500.0, 0.0, 500.0);
glMatrixMode(GL_MODELVIEW);
}
void drawSquare(int x, int y)
{
glClearColor(1.0,1.0,1.0,0.0);
y=nHeight-y; /* invert y position */
glColor3f( 1.0,0.0, 0.0); /* a random color */
glTranslatef(x,y,0);
glRecti (0,0, 50, 50);
glTranslatef(-x,-y,0);
glFlush();
}
void mymouse(int btn, int state, int x, int y)
{
if(btn==GLUT_RIGHT_BUTTON && state==GLUT_DOWN)
exit(0);
if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
drawSquare(x, y);
}
void display( void )
{
glClear(GL_COLOR_BUFFER_BIT); //clear the window
glColor3f(1.0, 1.0, 1.0);
// Set up model/viewing transformation
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Draw whatever primitives are desired
glBegin(GL_LINES);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(0, 100);
glVertex2f(600,100);// ÇáÎØ ÇáÑÆíÓí ÝæÞ
glVertex2f(120, 100); // ÇáÎØ ÇáÃæá ÊÈÚ ÇáãËáË
glVertex2f(120,0);
glVertex2f(240, 100);// ÇáÎØ ÇáËÇäí ÊÈÚ ÇáßÊÇÈÉ
glVertex2f(240,0);
glVertex2f(360, 100);
glVertex2f(360,0);// ÇáÎØ ÇáËÇáË ÊÈÚ ÇáÈæÑÏÑ
glVertex2f(0, 30);
glVertex2f(120,30);// ÇáÎØ ÇáÑÇÈÚ ÊÈÚ ÍÌã ÇáãËáË
glVertex2f(360, 30);
glVertex2f(600,30);// ÇáÎØ ÊÈÚ CLEAR ALL
glVertex2f(60,30);
glVertex2f(60,0);// ÇáÎØ Çáí ÈäÕ Èíä ÇáäÕ æ 2
glVertex2f(450,100);
glVertex2f(450,30);//ÇáÎØ ÇáÚãæÏí ÊÈÚ ÍÌã ÇáãÍÇí
glVertex2f(450,65);
glVertex2f(600,65);//ÇáÎØ Çáí ÈÝÕá ÇáããÍÇÊíä
glEnd();
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(30, 90);
glVertex2f(80,90);
glVertex2f(80, 40);
glVertex2f(30, 40);
glEnd();// ÇáãËáË Çáí Ýí ÇáÎíÇÑÇÊ ÊÍÊ
glBegin(GL_QUADS);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(460, 95);
glVertex2f(490,95);
glVertex2f(490, 70);
glVertex2f(460, 70);
glVertex2f(465, 60);
glVertex2f(483,60);
glVertex2f(483, 40);
glVertex2f(465, 40);
glEnd();//ÇáãÑÈÚíä áÍÌã ÇáããÍÇå
int i;
char stringn[]="Text";
glRasterPos2f(160.0,50.0);
for (i = 0; i < 4; i++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)stringn);
}//áßÊÇÈÉ ßáãÉ txt
int m;
char string[]="border";
glRasterPos2f(260.0,50.0);
for (m = 0; m < 6; m++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)string[m]);
}// border áßÊÇÈÉ ßáãÉ
int j;
char strig[]="eraser";
glRasterPos2f(380.0,60.0);
for (j = 0; j < 6; j++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)strig[j]);
}// eraser áßÊÇÈÉ ßáãÉ
int k;
char str[]="clear all";
glRasterPos2f(400.0,10.0);
for (k = 0; k < 9; k++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)str[k]);
}// clear all áßÊÇÈÉ ÌãáÉ
int h;
char st[]="0.5";
glRasterPos2f(20.0,10.0);
for (h = 0; h < 3; h++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)st[h]);
}// áßÊÇÈÉ ÇáäÕ
int t;
char sm[]="2";
glRasterPos2f(80.0,10.0);
for (t = 0; t < 1; t++)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)sm[t]);
}// áßÊÇÈÉ 2
glPointSize(5);
glBegin(GL_POINTS);
glVertex2f(330.0, 60.0);
glVertex2f(335.0,60.0);
glVertex2f(332.5,55.0);
glVertex2f(330.5,50.0);
glVertex2f(335.0,50.0);
glEnd();
cout<<"executing display()"<<endl; //just to show when display() is called
glFlush(); /* clear buffers */
}
void main(int argc, char** argv)
{
/* Standard GLUT initialization */
glutInit(&argc,argv); //initialize GLUT
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600,600);
glutInitWindowPosition(50,100);
glutCreateWindow("Ahmad Majid World");
glutDisplayFunc(display);
myinit();
glutMouseFunc(mymouse);
glutMainLoop(); // enter event loop
}