내보내기(0) 인쇄
모두 확장
Run
확장 최소화
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

StylusPointCollection

Silverlight

관련된 StylusPoint 개체의 컬렉션을 나타냅니다.

<StylusPointCollection   ...>
  oneOrMoreStylusPoints
</StylusPointCollection>

설명

oneOrMoreStylusPoints

하나 이상의 StylusPoint 개체 요소입니다.

이 컬렉션은 Stroke 개체의 모양을 정의하는 StylusPoint 개체를 추적합니다.

StylusPointCollection 은 둘 이상의 Stroke 개체에 속할 수 있지만, 이렇게 하려면 스크립트에서 Stroke의 기존 StylusPoints 값을 다른 Stroke에 할당해야 합니다.

Add 또는 GetItem 등의 컬렉션 메서드는 StylusPoint 형식인 개체를 필요로 하거나 반환합니다. 이 컬렉션은 Collection 메서드를 정의하는 것 외에 AddStylusPoints 메서드도 정의합니다.

StylusPoint 를 사용하는 속성의 XAML 구문은 실제 StylusPointCollection 개체 요소를 생략할 수 있는 암시적 컬렉션 구문의 예일 수 있습니다. 하지만 InkPresenter에 스트로크를 미리 채우는 방법은 많이 사용되는 기술이 아닙니다. 일반적으로 빈 Strokes 컬렉션으로 시작하여 런타임 JavaScript를 통해 스트로크를 사용자 입력으로 캡처합니다.

다음 예제 코드에서는 지우기 모드를 포함한 기본 잉크 캡처 및 표현 기술을 보여 줍니다.

// Define variables.
var agCtrl;
var inkPresenter; // Corresponds to the InkPresenter element in XAML.
var newStroke = null; // The Stroke variable for mouse handlers.

function root_Loaded(sender, args)
{
  // Get the HTML object that contains the Silverlight plug-in.
  agCtrl = sender.GetHost();

  // Hold on to the InkPresenter plug-in interface.
  inkPresenter = sender.findname("inkPresenterElement");
}

// Capture mouse movement and create the stroke.
function InkPresenterMouseDown(sender,args)
{
  inkPresenter.CaptureMouse();

  // Inverted stylus means enter Erase mode
  if (args.GetStylusInfo().IsInverted)
  {
    var sc = agCtrl.content.createFromXaml("<StrokeCollection/>");
    sc = inkPresenter.Strokes.HitTest(args.GetStylusPoints(inkPresenter));
    
    for (var i = 0; i < sc.Count; i++)
    {
      inkPresenter.Strokes.Remove(sc.GetItem(i));
    }
  }
  else // Ink mode
  {
    newStroke = agCtrl.content.createFromXaml('<Stroke/>');

    var da = agCtrl.content.createFromXaml('<DrawingAttributes/>');
    newStroke.DrawingAttributes = da;
    var spc = agCtrl.content.createFromXaml('<StylusPointCollection/>');
    newStroke.StylusPoints = spc;

    newStroke.DrawingAttributes.Width = 5;
    newStroke.DrawingAttributes.Height = 5;
    newStroke.DrawingAttributes.Color = "Green";
    newStroke.DrawingAttributes.OutlineColor = "Black";

    newStroke.StylusPoints.AddStylusPoints(args.GetStylusPoints(inkPresenter));
    inkPresenter.Strokes.Add(newStroke);
  }
}

// Add the new points to the Stroke 
// or delete strokes if you are in erase mode.
function inkPresenterMouseMove(sender, args)
{
    var stylusPoints = args.getStylusPoints(sender);
   
    // Erase Mode
    if (lastErasePoint != null)
    {
        // Connect the point from previous mouse event
        // to the current collection of stylus points.
        stylusPoints.insert(0, lastErasePoint);
        var hitStrokes = sender.strokes.hitTest(stylusPoints);

        // Remove the strokes that were intersected above.
        for (var i = 0; i < hitStrokes.Count; i++)
        {
          sender.strokes.remove(hitStrokes.getItem(i));
        }
        
        // Update the cached last erase point.
        lastErasePoint = stylusPoints.getItem(stylusPoints.count-1);
    }

    // Ink Mode
    if (newStroke != null)
    {
        newStroke.stylusPoints.addStylusPoints(stylusPoints);
    }
}


// Release the mouse.
function InkPresenterMouseUp(sender,args)
{
  newStroke = null;
  inkPresenter.ReleaseMouseCapture();
}

function ClearInkMouseDown(sender,args)
{
  inkPresenter.Strokes.Clear();
}

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft