الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في تطوير برنامج للرسم .

بدأه love begin في 16 نوفمبر 2010 · 7 رد · 1,076 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا ايها الأعضاء

لك طلب مني عمل برنامج يعمل متل هذا البرنامج في الصوره

737048488.jpg

والمشكله انه انا بعرف اعمل خطوط او مثلثات لكني لم اعرف انه اعملها متل الشكل الذي في الصوره التقطيع المقطع فيها بهذا النظام

وانه لم اعرف ان اعمل ازرار انه لما اضغط على شي يتم تمفعيله وتحوله الى اللون السكني وبذلك استطيع الرسم في المنطقه بالخيار الذي حددته

بزبط متل هذه الصوره

455389802.jpg

ارجو المساعده في ذلك ولكم جزيل الشكر

#2

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته.

مرحباً بكم في منتدى الفريق العربي للبرمجة

هذا الموضوع يشتمل على مخالفة أو أكثر لقواعد المشاركة.

الرجاء التنبه وعدم تكرار المخالفة في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

#3

يمكن الاستفادة من هذا التطبيق ، لمعرفة كيفية الرسم باستخدام OpenGL ، وكيفية التفاعل مع المستخدم ( يستخدم القائمة اليمنى لاظهار قائمة الخيارات - السحب والافلات من أجل رسم ( خط مستقيم - نقاط ) .

/index.php?showtopic=162713

و يمكن الاستفادة من هذا المثال البسيط جداً لمعرفة كيفية إضافة " أزرار " باستخدم OpenGL ( مجرد رسم مستطيل و إضافة بعض الأحداث مع حركة الفأرة ) .

المثال يقوم بملاحظة الأحداث التالية على الزر : ( المؤشر فوق الزر - المؤشر خارج الزر - المستخدم نقر على هذا الزر ) .

#include<windows.h>
#include<gl/glut.h>
#include<vector>
#include<iostream>

//***************

int WINDOW_WIDTH = 0;
int WINDOW_HEIGHT  = 0;
const int BUTTON_LEFT   = 20;
const int BUTTON_BOTTOM = 20;
const int BUTTON_RIGHT  = 80;
const int BUTTON_TOP    = 40;

int state = 0;
/*


left,top        right,top
+**************+
*              *  
*              *  
+**************+
left,bottom     right,bottom


*/

bool isPoiintInsideRect(int pointX,int PointY , int left,int bottom,int right,int top)
{
  return (pointX >=left && pointX <= right && PointY <= top && PointY >= bottom);

}



void render()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();

    glColor3f(1,1,1);
	glRectf(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);

	if(state == 1 ) // inside
	{
		glColor3f(1,0,0);
	}
	else if(state == 2) // chosen
	{
	    glColor3f(1,1,0);
	}	
	else
	{
	   glColor3f(0,0,1);
	}
	glRectf(BUTTON_LEFT,BUTTON_BOTTOM,BUTTON_RIGHT,BUTTON_TOP);


	glutSwapBuffers();
}


void resize(int w,int h)
{
	WINDOW_WIDTH  = w;
	WINDOW_HEIGHT = h;

	glViewport(0,0,w,h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	gluOrtho2D(0,w,0,h);

 	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

}




void mouse(int b,int s,int x,int y)
{
	if( b == GLUT_LEFT_BUTTON && s == GLUT_DOWN )
	{
    if(isPoiintInsideRect(x,WINDOW_HEIGHT - y,BUTTON_LEFT,BUTTON_BOTTOM,BUTTON_RIGHT,BUTTON_TOP) == true )
		state = 1;
	else
		state = 0;
	}

	glutPostRedisplay();
}

void motion(int x,int y)
{
	std::cout << x << " " <<  WINDOW_HEIGHT - y << std::endl;

	if(isPoiintInsideRect(x,WINDOW_HEIGHT - y,BUTTON_LEFT,BUTTON_BOTTOM,BUTTON_RIGHT,BUTTON_TOP) == true )
		state = 2;
	else
		state = 0;

	glutPostRedisplay();
}

int main(void)
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB );
    glutCreateWindow("Test");

	glutMouseFunc(mouse);
	glutPassiveMotionFunc(motion);


	//////////////////////////////////
	glutDisplayFunc(render);
    glutReshapeFunc(resize);


	glutMainLoop();
	return 0;
}

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

بارك الله فيك اخي وان شاء الله استفيد من طرحك

#5

السلام عليكم و رحمة الله و بركاته.

أعتذر مسبقا عن أي تطاول يبتذر مني.

أخي الشمري لا أخالفك الرأي إن كنت ترى في ما قلته أنت لإنشاء زر أو إثنان على فضاء الأوبن جي أل و لكن إذا كان هناك الكثير من واجهات التطبيق gui فهذا يستدعي للإعتماد على مكتبة تستعين بالمعالجة المركزية .

أنظر إلى مكتبة glui و ما مدى الإخفاق الذي أحرزته و أنظر إلى مكتبة cairo مثلا و ما مدى النجاح الذي توصلت له. الكل يرى واجهات التطبيق سهلة مع السيد أوبن جي أل و لكنها بالأساس الأسلوب السيء و هذا من وجهة نظري و يمكنك مخالفتي .

الأخ love begin أنت تريد تصميم عالم مع أزرار و ما شابه , إعتمد في معالجة الأزرار بمكتبات منفصلة عن الأوبن جي أل و تستفيد من المعالجة المركزية ( كما ذكرت) و أما العوالم الإفتراضية فيستحسن بأن يقع الإختيار على مكتبات تستفيد من المعالجة الرسومية إما opengl أو directx .

بالمرفقات شيفرة QT & C++ & OPENGL . قد لا يكون مثلما ذكرت قيلا لأنه من المستحيل أن أكون البديل عما تنجزه.

لماذا تم إختيار qt , لأنه متعدد المنصات , بإمكانك الإستعانة ب gtk أو cairo و هذا الأخير لتصميم الواجهات الرسومية من الصفر , (آه , أعتقد أن gtk أو qt يعتمد على cairo في بناء الواجهة , لا أتذكر جيدا)

و أعتذر فيما يخص زر النصوص TEXT فقد رأيت أنني سأثقل البرنامج إن حاولت إضافة النصوص و سأفقد السيطرة عليه و هذا يحتاج وقتا لأنه حسب رأيي إتخذت الأسلوب الأمثل فيما يخص البرمجيات الرسومية.

arabteam2000.rar

1

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#6

اخي 3d_max يسلموووو على هذا الشرح واتمنى ان استفيد منه جدا

لكم مني جزيل الشكر اخوتي

ولي رجعه بعد التجربه

#7

شباب انا جربت كل الطرق وما راضي يزبط الفورم الرجاء من احد الأعضاء اظافة كود الفورم فقط يعني يضعني على اول الطريق ولكم جزيل الشكر

#8

الرجاء من اعضاء المنتدى انا اريد ولو جزء بسيط من البرنامج وانا سأكملة بنفسي الرجاء المساعده في هذا الموضوع بعجله

ولكم جزيل الشكر

مواضيع مشابهة