111,114
社区成员




private void openGLControl1_Resized(object sender, EventArgs e)
{
SharpGL.OpenGL gl = this.openGLControl1.OpenGL;
gl.MatrixMode(OpenGL.GL_PROJECTION);
gl.LoadIdentity();
gl.Ortho(-10, 10, -10 / ratio, 10 / ratio, 0.01, 100);
xx = 20.0 / openGLControl1.Width;
yy = 20.0 / openGLControl1.Height ;
gl.LookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
gl.MatrixMode(OpenGL.GL_MODELVIEW);
}
private void Mouse_Wheel(object sender, MouseEventArgs e)
{
//当e.Delta > 0时鼠标滚轮是向上滚动,e.Delta < 0时鼠标滚轮向下滚动
if (Mouse_In_Flag)
{
if (e.Delta < 0)
Scale += 0.1f;
else
Scale -= 0.1f;
if (Scale >= 5)
Scale = 5;
if (Scale <= 0.05)
Scale = 0.05;
Mouse_Pos_x = (double)xx * (e.X - openGLControl1.Width / 2);
Mouse_Pos_y = (double)yy * (-e.Y + openGLControl1.Height / 2);
}
}
private void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args)
{
OpenGL gl=this.openGLControl1.OpenGL;
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT|OpenGL.GL_DEPTH_BUFFER_BIT);
gl.LoadIdentity();
DrawGrid(gl);
gl.PushMatrix();
gl.Translate(Mouse_Pos_x*(1-Scale), Mouse_Pos_y*(1-Scale), 0)
gl.Scale(Scale, Scale, Scale);
gl.Color(1f,1f,0f);
gl.LineWidth(2f);
gl.Begin(OpenGL.GL_LINE_LOOP);
gl.Vertex(0, 0, 0);
gl.Vertex(5, 0, 0);
gl.Vertex(5, 5, 0);
gl.Vertex(0, 5, 0);
gl.End();
gl.PopMatrix();
gl.Flush();
}
glpushMatrix,glPopMatrix会不会有用?
你好,我也遇到了这个问题,你这个问题解决了吗?