0

私は一種の描画アプリを持っています。タッチ入力に線が引かれます。

      void Touch_FrameReported(object sender, TouchFrameEventArgs e)
      {
        int pointsNumber = e.GetTouchPoints(InkCanvas2).Count;
        TouchPointCollection pointCollection = e.GetTouchPoints(InkCanvas2);

        for (int i = 0; i < pointsNumber; i++)
        {
            if (pointCollection[i].Action == TouchAction.Down)
            {
                preXArray[i] = pointCollection[i].Position.X;
                preYArray[i] = pointCollection[i].Position.Y;
            }
            if (pointCollection[i].Action == TouchAction.Move)
            {
                Line line = new Line();


                line.X1 = preXArray[i];
                line.Y1 = preYArray[i];
                line.X2 = pointCollection[i].Position.X;
                line.Y2 = pointCollection[i].Position.Y;

                line.Stroke = StrokeColorBrush;
                line.Fill = StrokeColorBrush;
                line.StrokeThickness = StrokeWidth;
                line.StrokeDashCap = PenLineCap.Round;
                line.StrokeStartLineCap = PenLineCap.Round;
                line.StrokeEndLineCap = PenLineCap.Round;

                InkCanvas2.Children.Add(line);

                preXArray[i] = pointCollection[i].Position.X;
                preYArray[i] = pointCollection[i].Position.Y;

                Brush aSolidBrush = new SolidColorBrush(Colors.Black);

            }
        }

マウスイベント

    void InkCanvas2_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        currentPoint = e.GetPosition(InkCanvas2);
        oldPoint = currentPoint;
    }


    void InkCanvas2_MouseMove(object sender, MouseEventArgs e)
    {
        currentPoint = e.GetPosition(this.InkCanvas2);

        Line line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y };
        line.Stroke = StrokeColorBrush;
        line.StrokeThickness = StrokeWidth;

        line.StrokeStartLineCap = PenLineCap.Round;
        line.StrokeEndLineCap = PenLineCap.Round;
        line.StrokeLineJoin = PenLineJoin.Round;

        this.InkCanvas2.Children.Add(line);
        oldPoint = currentPoint;
    }

で全部クリアしました

 InkCanvas2.Children.Clear();

今、消しゴム機能を実装しようとしています。次に、線の上に描画すると、それらの部分が消去されます。トリックをしない透明に色を変更してみました。助言がありますか?

4

1 に答える 1

0

次のようなことができます。

inkCanvas2.EditingMode = InkCanvasEditingMode.EraseByPoint;
于 2013-06-11T06:53:13.557 に答える