ermia_
جمعه 15 خرداد 1388, 17:34 عصر
سلام دوستان
من یه برنامه نوشتم در قسمت کنسول با opengl
این برنامه یک n رو از ورودی میگیره و د ضلعی منتظم رو رسم میکنه.
مشکلم اینه که نمی دونم تو محیط کنسول چطوری یک textbox قرار بدم که از کاربر n رو بگیرم.
میخوام مثلا یه textbox و یه دکمه بالای صفحه باشه، کاربر n رو که وارد کرد تو tetxtbox و دکمه ok رو زد، n ضلعی رسم بشه.
تو محیط windows form این برنامه رو ننوشتم واسه اینکه نمی دونستم کلاس opengl رو چطوری به فرم ربط بدم که نتیجه تو اون فرم نشون داده بشه.
تازه C# دارم یاد میگیرم، اطلاعاتم خیلی کمه.
برنامه ای که نوشتم اینه:
(البته همشو من ننوشتم،فقط قسمت دستورات opengl رو نوشتم،قسمت بالاش که یه فرم DotsDemo ایجاد میکنه و به کلاس Opengl ربط میده از یه برنامه دیگه گرفتم)
using System;
using System.Drawing;
using System.Windows.Forms;
using CsGL.OpenGL;
public class DotsDemo : Form
{
View view = new View();
public DotsDemo()
{
Text = "Dots demo !";
view.Dock = DockStyle.Fill;
Controls.Add(view);
}
public static void Main()
{
DotsDemo di = new DotsDemo();
Application.Run(di);
}
}
class View : OpenGLControl
{
public override void glDraw()
{
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Clear Screen And Depth Buffer
GL.glBegin(GL.GL_LINES);
int i;
double x0, y0, x1, y1, th = 360 / n;
x0 = 1 * Math.Cos(th * Math.PI / 180);
y0 = 1 * Math.Sin(th * Math.PI / 180);
for (i = 1; i <= n; i++)
{
x1 = 1 * Math.Cos(((i+1)*th)* Math.PI/180);
y1 = 1 * Math.Sin(((i+1)*th)* Math.PI/180);
GL.glVertex2d(x0, y0);
GL.glVertex2d(x1, y1);
x0 = x1;
y0 = y1;
}
GL.glEnd();
GL.glFlush();
}
protected override void InitGLContext()
{
GL.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
GL.glColor3f(0.0f, 0.0f, 0.0f);
GL.glPointSize(1.0f);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glLoadIdentity();
}
}
برنامه تو محیط کنسول و دادن یه عدد به جای n به درستی کار می کنه، اما میخوام از textbox و ... تو برنامه استفاده کنم اما بلد نیستم
میشه کمکم کنید
ممنونم
من یه برنامه نوشتم در قسمت کنسول با opengl
این برنامه یک n رو از ورودی میگیره و د ضلعی منتظم رو رسم میکنه.
مشکلم اینه که نمی دونم تو محیط کنسول چطوری یک textbox قرار بدم که از کاربر n رو بگیرم.
میخوام مثلا یه textbox و یه دکمه بالای صفحه باشه، کاربر n رو که وارد کرد تو tetxtbox و دکمه ok رو زد، n ضلعی رسم بشه.
تو محیط windows form این برنامه رو ننوشتم واسه اینکه نمی دونستم کلاس opengl رو چطوری به فرم ربط بدم که نتیجه تو اون فرم نشون داده بشه.
تازه C# دارم یاد میگیرم، اطلاعاتم خیلی کمه.
برنامه ای که نوشتم اینه:
(البته همشو من ننوشتم،فقط قسمت دستورات opengl رو نوشتم،قسمت بالاش که یه فرم DotsDemo ایجاد میکنه و به کلاس Opengl ربط میده از یه برنامه دیگه گرفتم)
using System;
using System.Drawing;
using System.Windows.Forms;
using CsGL.OpenGL;
public class DotsDemo : Form
{
View view = new View();
public DotsDemo()
{
Text = "Dots demo !";
view.Dock = DockStyle.Fill;
Controls.Add(view);
}
public static void Main()
{
DotsDemo di = new DotsDemo();
Application.Run(di);
}
}
class View : OpenGLControl
{
public override void glDraw()
{
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Clear Screen And Depth Buffer
GL.glBegin(GL.GL_LINES);
int i;
double x0, y0, x1, y1, th = 360 / n;
x0 = 1 * Math.Cos(th * Math.PI / 180);
y0 = 1 * Math.Sin(th * Math.PI / 180);
for (i = 1; i <= n; i++)
{
x1 = 1 * Math.Cos(((i+1)*th)* Math.PI/180);
y1 = 1 * Math.Sin(((i+1)*th)* Math.PI/180);
GL.glVertex2d(x0, y0);
GL.glVertex2d(x1, y1);
x0 = x1;
y0 = y1;
}
GL.glEnd();
GL.glFlush();
}
protected override void InitGLContext()
{
GL.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
GL.glColor3f(0.0f, 0.0f, 0.0f);
GL.glPointSize(1.0f);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glLoadIdentity();
}
}
برنامه تو محیط کنسول و دادن یه عدد به جای n به درستی کار می کنه، اما میخوام از textbox و ... تو برنامه استفاده کنم اما بلد نیستم
میشه کمکم کنید
ممنونم