저는이 포럼을 처음 접했고 아직 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);
}
내가이 같은 디스패처를 전달하는 건강한 아니라고 알고
을 가지고 있지만, 지금은 충분하다.다시 한번 감사드립니다.
코드를 게시하십시오 – Paparazzi
스트로크 색상의 알파 값을 편집 할 수 있지만 루프를 반복해야합니다. 값 비싼 루프라고 말하지만 벤치마킹을했거나 너무 느릴 것으로 생각하십니까? – keyboardP