/** * @brief button1 클릭 이벤트 * @details 버튼 클릭시 워커를 생성해 오는 데이터 메세지 큐에 저장하고, 타이머를 생성해서 메세지 큐를 주기적으로 확인하며, 메세지가 있으면 애니메이션을 시작한다. * @author 불명(김효상 확인) * @date 불명(2017-1-23 확인) */ public void button1_Click(object sender, EventArgs e) { if (!innerStartAnim && ObjectList.imgList.Count > 0) { List <int>[] models = new List <int> [1]; models[0] = new List <int>(); for (int i = 0; i < loadedObjectList.Count(); i++) { models[0].Add(i + 1); } animHandler = new AnimatorHandler(g, pictureBox1); rsv = new MessageReceiver(); worker = new BackgroundWorker(); rsv.RunWorkerAsync(); worker.DoWork += Worker_DoWork; worker.WorkerSupportsCancellation = true; worker.WorkerReportsProgress = true; worker.ProgressChanged += Worker_ProgressChanged; worker.RunWorkerAsync(); innerStartAnim = true; //******************************************************************** } else if (ObjectList.imgList.Count == 0) { MessageBox.Show("Load model and picture in 'Load Model' tab, before entering Animator.", "DEVS-Animation"); } }
/** * @brief Reset 클릭 이벤트 * @details 진행 상황을 모두 종료하고 초기화한다. * @author 김민규 * @date 2017-7-13 */ public void Reset_Click(object sender, EventArgs e) { innerStartAnim = false; if (worker != null) { worker.CancelAsync(); } if (rsv != null) { rsv.StopWorkerAsync(); } animHandler = null; innerAnimatorBitmap = null; g.Clear(Color.FromArgb(255, 0, 0, 0)); loadedObjectList.Clear(); pictureBox1.Invalidate(); this.Invoke((MethodInvoker) delegate() { obj.Clear(); }); }