各位大侠: 我想问一个关于控制物体移动的问题,如下:
新建了2个CLASS,一个叫做 Keysetting, 另一个叫做keysetting2. 而且目前我一共画了2个cube。又添加了2个 radiobutton. 一个叫做 radiobutton1, 另一个叫做radiobutton2. 我现在要做的是,当点击radiobutton1的时候,只控制cube1, 通过keysetting. 点击radiobutton2 的时候,只控制cube2, 通过 keysetting2.cube1 保持原状不动。 目前我自己写的关于控制着两个cube的程序: private void radioButton1_KeyPress(object sender, KeyPressEventArgs e)
{
keysetting.key(sender, e);
this.Refresh();
} private void radioButton2_KeyPress(object sender, KeyPressEventArgs e)
{
keysetting2.key(sender, e);
this.Refresh();
} 在keysetting.key中的代码是:
class KeySetting
{
public void key(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.O)
{
const float viewAngle = 30.0f;
Gl.glRotatef(viewAngle, 1.0f, 0.0f, 0.0f);
cube.Control(RotX, RotY, RotZ, X, Y, Z);
axes.Draw();
}
if (e.KeyChar == (char)Keys.X)
{
RotX += 2.0f;
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glPushMatrix();
Gl.glRotatef(RotX, 1.0f, 0.0f, 0.0f);
Gl.glRotatef(RotY, 0.0f, 1.0f, 0.0f);
Gl.glRotatef(RotZ, 0.0f, 0.0f, 1.0f);
Gl.glTranslatef(X, Y, Z);
cube.Draw();
Gl.glLoadIdentity();
Gl.glPopMatrix();
axes.Draw();
..............................
..............................还有很多关于键盘的设置的code我没有贴上来,但是大意就是用不同的键,例如 x, y, o, L 之类的 控制我画的cube 做旋转,移动等动作目前我的程序可以运行。 但是有一个问题不知道怎么解决,假如我选择了radiobutton1 (只能控制cube1),刚刚让cube1 沿着 x 轴移动了 10.0f, 现在我想让他呆在那里不动,开始操作cube2,不知怎么实现?
因为我现在一旦操作了cube1,然后再选择radiobutton2, 操作cube2的时候,cube1 就自己跑回他原来的初始位置了很恶心 烦请各位兄弟们指教了 万分感谢!!!
新建了2个CLASS,一个叫做 Keysetting, 另一个叫做keysetting2. 而且目前我一共画了2个cube。又添加了2个 radiobutton. 一个叫做 radiobutton1, 另一个叫做radiobutton2. 我现在要做的是,当点击radiobutton1的时候,只控制cube1, 通过keysetting. 点击radiobutton2 的时候,只控制cube2, 通过 keysetting2.cube1 保持原状不动。 目前我自己写的关于控制着两个cube的程序: private void radioButton1_KeyPress(object sender, KeyPressEventArgs e)
{
keysetting.key(sender, e);
this.Refresh();
} private void radioButton2_KeyPress(object sender, KeyPressEventArgs e)
{
keysetting2.key(sender, e);
this.Refresh();
} 在keysetting.key中的代码是:
class KeySetting
{
public void key(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.O)
{
const float viewAngle = 30.0f;
Gl.glRotatef(viewAngle, 1.0f, 0.0f, 0.0f);
cube.Control(RotX, RotY, RotZ, X, Y, Z);
axes.Draw();
}
if (e.KeyChar == (char)Keys.X)
{
RotX += 2.0f;
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glPushMatrix();
Gl.glRotatef(RotX, 1.0f, 0.0f, 0.0f);
Gl.glRotatef(RotY, 0.0f, 1.0f, 0.0f);
Gl.glRotatef(RotZ, 0.0f, 0.0f, 1.0f);
Gl.glTranslatef(X, Y, Z);
cube.Draw();
Gl.glLoadIdentity();
Gl.glPopMatrix();
axes.Draw();
..............................
..............................还有很多关于键盘的设置的code我没有贴上来,但是大意就是用不同的键,例如 x, y, o, L 之类的 控制我画的cube 做旋转,移动等动作目前我的程序可以运行。 但是有一个问题不知道怎么解决,假如我选择了radiobutton1 (只能控制cube1),刚刚让cube1 沿着 x 轴移动了 10.0f, 现在我想让他呆在那里不动,开始操作cube2,不知怎么实现?
因为我现在一旦操作了cube1,然后再选择radiobutton2, 操作cube2的时候,cube1 就自己跑回他原来的初始位置了很恶心 烦请各位兄弟们指教了 万分感谢!!!
解决方案 »
- C#引用C++外部接口,回调函数问题(高手请入)
- Linq 连接字符串问题
- datatable赋值问题
- 哭死了大家帮帮我(QuartzTypeLib 无法释放正在播放的视频 )
- word 功能区支持(customUI) 怎么样实现两个dropDown级联的效果
- treeView鼠标经过节点或选中节点的时候都有一个背景颜色,怎么去掉啊??
- 请教下 Devpress.XtraGrid 怎样修改单元格Tooltip的内容
- 哪里有treeview下载啊?
- 怎样取得文本框的x和y坐标
- 我最近想做个类似于QQ截图的截图工具,可想不出思路
- C#程序如何在XP系统中建立网络连接?不用系统界面
- DataGridView无论我输入什么,最后一个数怎么得到的总是0?问题很严重了!
class KeySetting
{
private int cubeX,cubeY,cubeZ; //增加一些成员变量保存cube的当前位置坐标 public void key(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.O)
{
const float viewAngle = 30.0f;
Gl.glRotatef(viewAngle, 1.0f, 0.0f, 0.0f);
cube.Control(RotX, RotY, RotZ, cubeX, cubeY, cubeZ); //改动
axes.Draw();
}
...