Есть ли у кого-нибудь пример использования таблицы спрайтов в Silverlight? Я хочу обрезать изображение и при нажатии кнопки перейти к следующему кадру. (Если пользователь продолжает нажимать кнопку, это будет выглядеть как анимация). Я осмотрелся, но не нашел именно того, что ищу. Спасибо за любую помощь.
Таблица спрайтов в Silverlight
Ответы (2)
Следующее сделает именно то, что вы ищете. Вы можете использовать клавиши «Вверх» ↑ и «Вниз» ↓ на клавиатуре для перемещения вперед и назад по анимации.
XAML
<Rectangle x:Name="imgRect">
<Rectangle.Fill>
<ImageBrush x:Name="imgBrush" ImageSource="walking_spritesheet.png" Stretch="None" AlignmentX="Left" AlignmentY="Top" />
</Rectangle.Fill>
</Rectangle>
C #
imgRect.Width = 240; //Set the width of an individual sprite
imgRect.Height = 296; //Set the height of an individual sprite
const int ximages = 6; //The number of sprites in each row
const int yimages = 5; //The number of sprites in each column
int currentRow = 0;
int currentColumn = 0;
TranslateTransform offsetTransform = new TranslateTransform();
KeyDown += delegate(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up:
currentColumn--;
if (currentColumn < 0)
{
currentColumn = ximages -1;
if (currentRow == 0)
{
currentRow = yimages - 1;
}
else
{
currentRow--;
}
}
break;
case Key.Down:
currentColumn++;
if (currentColumn == ximages)
{
currentColumn = 0;
if (currentRow == yimages - 1)
{
currentRow = 0;
}
else
{
currentRow++;
}
}
break;
default:
break;
}
offsetTransform.X = -imgRect.Width * currentColumn;
offsetTransform.Y = -imgRect.Height * currentRow;
imgBrush.Transform = offsetTransform;
Для тестирования попробуйте использовать следующее изображение (1440x1480):
Вот еще одно решение, которое работает с любой таблицей спрайтов, которую вы создаете, просто добавьте ключевой код.
Если вы хотите использовать Sprite Vortex (на самом деле конкретную версию), вы можете использовать следующий класс. Вы должны использовать Sprite Vortex 1.2.2, потому что в более новых версиях формат XML изменен. Убедитесь, что свойство XML-файла, которое вы добавляете, изменено на «Не компилировать».
Если вам нужен рабочий пример, я могу послать вам очень простой.
p.s. Sprite Vortex должен делать то же самое, что и другая программа, однако в версии 1.2.2 довольно много ошибок, но не так уж плохо.
класс находится здесь: http://pastebin.com/sNSa7xgQ