private void RotateXAsync() { while (_rotating) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.RotateOnX(_tnet, .05); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Thread.Sleep(5); CallRefreshToMainThread(); } }
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { if (_rotating) { _rotating = false; _thread.Abort(); _thread.Join(); _thread = null; } if (e.Button == transleftbtn) { _tnet = Transformations.Translate(_tnet, -75, 0, 0); Refresh(); } if (e.Button == transrightbtn) { _tnet = Transformations.Translate(_tnet, +75, 0, 0); Refresh(); } if (e.Button == transupbtn) { _tnet = Transformations.Translate(_tnet, 0, -35, 0); Refresh(); } if (e.Button == transdownbtn) { _tnet = Transformations.Translate(_tnet, 0, +35, 0); Refresh(); } if (e.Button == scaleupbtn) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.ScaleUniform(_scrnpts, _tnet, 1.10); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == scaledownbtn) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.ScaleUniform(_scrnpts, _tnet, 0.90); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == rotxby1btn) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.RotateOnX(_tnet, .05); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == rotyby1btn) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.RotateOnY(_tnet, .05); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == rotzby1btn) { _tnet = Transformations.TranslateToOrigin(_scrnpts, _tnet); _tnet = Transformations.RotateOnZ(_tnet, .05); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == rotxbtn) { _rotating = true; _thread = new Thread(new ThreadStart(RotateXAsync)); _thread.Start(); } if (e.Button == rotybtn) { _rotating = true; _thread = new Thread(new ThreadStart(RotateYAsync)); _thread.Start(); } if (e.Button == rotzbtn) { _rotating = true; _thread = new Thread(new ThreadStart(RotateZAsync)); _thread.Start(); } if (e.Button == shearleftbtn) { _tnet = Transformations.TranslateBaselineToXaxis(_vertices, _scrnpts, _tnet); _tnet = Transformations.ShearHorizontal(_tnet, 0.10); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == shearrightbtn) { _tnet = Transformations.TranslateBaselineToXaxis(_vertices, _scrnpts, _tnet); _tnet = Transformations.ShearHorizontal(_tnet, -0.10); _tnet = Transformations.Translate(_tnet, Transformations.PreviousXPos, Transformations.PreviousYPos, Transformations.PreviousZPos); Refresh(); } if (e.Button == resetbtn) { RestoreInitialImage(); } if (e.Button == exitbtn) { Close(); } }