나는 가로 텍스트 애니메이션/텍스트 스크롤에 대해 많은 스레드가 있다는 것을 안다. 그러나 불행하게도 그 중 아무 것도 반복 가능한 텍스트로 부드러운 스크롤을 제공하지 못한다. 텍스트를 포함하는 다양한 WPF 컨트롤을 사용하여 두 배/두께 애니메이션을 시도했습니다. 또한 시각적 브러시로 애니메이션을 시도했는데 다른 방법 (예 : Canvas.Left
속성을 가지고 노는 등)에 비해 가장 우아한 스크롤이 가능했지만 텍스트 길이 나 애니메이션 속도가 너무 빠르면 텍스트가 흐려집니다.부드러운 애니메이션 텍스트 선택 윤곽을 만드는 방법은 무엇입니까?
저는 SharpDX 라이브러리를 사용하여 순수한 DirectX C# 구현을 끝 냈습니다. 나는 또한 DirectX 프로그래밍의 초보자라는 것을 언급해야한다. 코드는 다음과 같습니다.
public void RunMethod()
{
// Make window active and hide mouse cursor.
window.PointerCursor = null;
window.Activate();
var str = "This is an example of a moving TextLayout object with no snapped pixel boundaries.";
// Infinite loop to prevent the application from exiting.
while (true)
{
// Dispatch all pending events in the queue.
window.Dispatcher.ProcessEvents(CoreProcessEventsOption.ProcessAllIfPresent);
// Quit if the users presses Escape key.
if (window.GetAsyncKeyState(VirtualKey.Escape) == CoreVirtualKeyStates.Down)
{
return;
}
// Set the Direct2D drawing target.
d2dContext.Target = d2dTarget;
// Clear the target.
d2dContext.BeginDraw();
d2dContext.Clear(Color.CornflowerBlue);
//float layoutXOffset = 0;
float layoutXOffset = layoutX;
// Create the DirectWrite factory objet.
SharpDX.DirectWrite.Factory fontFactory = new SharpDX.DirectWrite.Factory();
// Create a TextFormat object that will use the Segoe UI font with a size of 24 DIPs.
textFormat = new TextFormat(fontFactory, "Verdana", 100.0f);
textLayout2 = new TextLayout(fontFactory, str, textFormat, 2000.0f, 100.0f);
// Draw moving text without pixel snapping, thus giving a smoother movement.
// d2dContext.FillRectangle(new RectangleF(layoutXOffset, 1000, 1000, 100), backgroundBrush);
d2dContext.DrawTextLayout(new Vector2(layoutXOffset, 0), textLayout2, textBrush, DrawTextOptions.NoSnap);
d2dContext.EndDraw();
//var character = str.Substring(0, 1);
//str = str.Remove(0, 1);
//str += character;
layoutX -= 3.0f;
if (layoutX <= -1000)
{
layoutX = 0;
}
// Present the current buffer to the screen.
swapChain.Present(1, PresentFlags.None);
}
}
기본적으로 무한 루프를 생성하고 수평 오프셋을 뺍니다. 도전 과제는 다음과 같습니다. 간격이없는 HTML 선택 윤곽과 비슷한 반복 가능한 텍스트가 필요합니다. 여러 개의 모니터로 확장해야 할 수도 있습니다.
좋습니다.
고맙다, 그것은 좋아 보인다! 나는 그것을 시도해 보겠다. – adhiman
그래서, 나는 지금 아주 작은 조각으로 그것을 휘저었다. 텍스트의 길이와 길이를 변경 한 후 깜박이기 시작했습니다. 또한 텍스트는 반전 옵션없이 간격없이 반복 가능해야합니다. – adhiman
@adhiman 글쎄, "깜박 거림"이란 무슨 뜻인지 모르겠다. 그러나 반복적 인 텍스트에 관해서는, 나는 그것을하는 방법에 대한 단서가 없기 때문에, 상황은 훨씬 더 복잡해진다. 내 마음에 오는 유일한 것은 표시되는 텍스트라는 다른 속성을 만드는 것입니다. 그러면 루프 효과를 시뮬레이션 할 수 있도록 텍스트의 N 반복을 저장합니다. –