//すべての線を消去
        private void clearButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                for (int i = 0; i < strokeLines.Count(); i++)
                {
                    //ストローク一つひとつに、erase = trueをセット
                    strokeLines[i].SetEreased(true);

                    //本処理で初めてその線が消える場合のみ、erasedTimeをセット
                    if (strokeLines[i].GetEreasedTime() == -1)
                    {
                        strokeLines[i].SetEreasedTime(learningLogs.Count + 1);
                    }
                }

                //動作ログに記録。全消去の時はidの欄をallとする
                LearningLog log = new LearningLog();
                log.SetStrokeId("all");
                log.SetBehavior("erase");
                learningLogs.Add(log);

                //キャンバスをクリア
                inkCanvas1.Strokes.Clear();
            }
            catch
            {
            }
        }
        //ひとつ戻る
        private void undoButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //後ろからさかのぼって消えていない線を探す
                int i;
                for (i = strokeLines.Count - 1; i >= 0; i--)
                {
                    if (!strokeLines[i].GetEreased())
                    {
                        strokeLines[i].SetEreased(true);
                        strokeLines[i].SetEreasedTime(learningLogs.Count + 1);
                        inkCanvas1.Strokes.Clear();
                        drawAll();
                        break;
                    }
                }

                //動作ログに記録
                LearningLog log = new LearningLog();
                log.SetStrokeId(strokeLines[i].GetId().ToString());
                log.SetBehavior("erase");
                learningLogs.Add(log);

                //1操作終わったので、新たにキャプチャが必要
                needToCapturenow = true;
            }
            catch
            {
                MessageBox.Show("ERROR! 一つ戻るの処理過程でエラーが起きました。");
            }
        }
Ejemplo n.º 3
0
        //すべての線を消去
        private void clearButton_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("線をすべて消しますか?", "かくにん", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.No)
            {
                return;
            }
            else
            {
                ((PNGWindow)this.Owner).ClearStrokes();
                try
                {
                    for (int i = 0; i < strokeLines.Count(); i++)
                    {
                        //ストローク一つひとつに、erase = trueをセット
                        strokeLines[i].SetEreased(true);

                        //本処理で初めてその線が消える場合のみ、erasedTimeをセット
                        if (strokeLines[i].GetEreasedTime() == -1)
                        {
                            strokeLines[i].SetEreasedTime(learningLogs.Count + 1);
                        }
                    }

                    //動作ログに記録。全消去の時はidの欄をallとする
                    LearningLog log = new LearningLog();
                    log.SetStrokeId("all");
                    log.SetBehavior("erase");
                    learningLogs.Add(log);

                    //キャンバスをクリア
                    inkCanvas1.Strokes.Clear();
                }
                catch
                {
                }
            }
        }
        //描く処理(マウスアップ)
        private void inkCanvas1_MouseUp(object sender, MouseButtonEventArgs e)
        {
            UIElement el = sender as UIElement;

            Console.WriteLine("まうすがはなれたよ");

            if (isFreeLine && dragging && counter > 3)
            {
                points.Add(e.GetPosition(el));

                //配列strokeLinesに追加
                StrokeLine strokeLine = new StrokeLine();
                strokeLine.SetPoints(points);
                strokeLine.SetColor(color);
                strokeLine.SetWidth((int)slider1.Value);
                strokeLine.SetDownNow(false);
                strokeLine.SetInSpace(false);
                strokeLines.Add(strokeLine);

                //動作ログに記録
                LearningLog log = new LearningLog();
                log.SetStrokeId(strokeId.ToString());
                log.SetBehavior("draw");
                learningLogs.Add(log);

                dragging = false;
                strokeId++;

                Console.WriteLine(counter.ToString());
                counter = 0;
            }

            else if (!isFreeLine && dragging && counter > 3)
            {
                inkCanvas1.Strokes.Clear();
                drawAll();

                //点の情報を集め、始点と現在の点をむすぶ
                StylusPointCollection spc = new StylusPointCollection();
                spc.Add(new StylusPoint(startP.X, startP.Y));
                spc.Add(new StylusPoint(e.GetPosition(el).X, e.GetPosition(el).Y));
                Stroke stroke = new Stroke(spc, inkDA);
                inkCanvas1.Strokes.Add(stroke);

                //pointsに始点と現在の点を格納
                points = new List <System.Windows.Point>();
                points.Add(startP);
                points.Add(e.GetPosition(el));

                //配列strokeLinesについか
                StrokeLine strokeLine = new StrokeLine();
                strokeLine.SetPoints(points);
                strokeLine.SetColor(color);
                strokeLine.SetWidth((int)slider1.Value);
                strokeLine.SetDownNow(false);
                strokeLine.SetInSpace(false);

                strokeLines.Add(strokeLine);

                dragging = false;
                counter  = 0;
            }

            //1操作終わったので、新たにキャプチャが必要
            needToCapturenow = true;
        }