2011-12-29 5 views
0

저는이 포럼을 처음 접했고 아직 WPF 초보자입니다.InkCanvas에서 획을 사라지게 만드는 방법

저는 inkcanvas에서 획을 애니메이션화해야하는 프로젝트 작업을하고 있습니다. 필요한 애니메이션 중 하나가 "사라지는 것"입니다. 선택한 스트로크를 버튼을 클릭하면 점차 사라지게하고 애니메이션의 끝 부분에 나타나게하고 싶습니다.

획에 대한 불투명도 속성이 없으므로 스토리 보드와 함께 ColorAnimation 클래스를 사용해 보았습니다. 나는이 코드를 작동시키지 못했는데, 스트로크를 사용하거나 이름을 사용하는 것은 대상이 없기 때문에 대상을 지정할 수 없습니다.

지금이 스트로크의 색상을 배경색으로 점진적으로 변경하고 결국에는 초기 값으로 다시 설정하여이 시스템을 구현할 생각입니다. 이것은 값 비싼 반복이지만 다른 생각은 없습니다.

나에게 공유 할 수있는 다른 솔루션이 있으면 감사하겠습니다.

미리 감사드립니다.

편집 : 나는 같은 프로젝트의 다른 부분을 다루고 있기 때문에 의견에 답변하지 않았습니다.

DrawingAttributes에 저장된 알파 값을 사용해 보았지만 값이 변수가 아니므로 변경할 수 없습니다. RGB 값도 마찬가지입니다. 스트로크를 루프에서 사라지게 만드는 방법에 대해서는 전혀 모른다. 이미 대부분의 프로젝트를 구현 했으므로 천천히 사라지게 할 무언가가 필요합니다. 아래에서 스트로크 자체를 변경하여 애니메이션을 적용하는 예제를 찾을 수 있습니다.

private int dropOffset = 1; 
    private void DropAnimation() 
    { 
     m = new Matrix(); 
     m.Translate(0, dropOffset); 

     animStrokes.Transform(m, false); 
     YChange += dropOffset; 
     dropOffset += 2; 
    } 

그리고 다른 클래스의

, 나는
public void AnimateStrokes(Dispatcher canvasDispatch) 
    { 
     Stopwatch initial = Stopwatch.StartNew(); 
     while (initial.ElapsedMilliseconds < 2000) 
     { 
      foreach (Animation ai in AnimationList) 
      { 
       ai.animateSelected(); 
      } 
      canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render); 
      Thread.Sleep(50); 
     } 
     foreach (Animation a in AnimationList) 
     { 
      a.undoAnimation(); 
     } 
     canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render); 
    } 

내가이 같은 디스패처를 전달하는 건강한 아니라고 알고

을 가지고 있지만, 지금은 충분하다.

다시 한번 감사드립니다.

+0

코드를 게시하십시오 – Paparazzi

+0

스트로크 색상의 알파 값을 편집 할 수 있지만 루프를 반복해야합니다. 값 비싼 루프라고 말하지만 벤치마킹을했거나 너무 느릴 것으로 생각하십니까? – keyboardP

답변

0
InkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(100, 0, 255, 255); 

다소 늦지 만 다른 사람들에게 도움이 될 수 있습니다. 100은 기본적으로 불투명도 값처럼 작동하는 알파 값입니다! 그걸로 혼란 스러울 때 스트로크의 투명도를 변경할 수 있습니다 :)