裁剪图像那么到底我们该怎么做精灵在UWP又名Windows应用商店的应用程序? this SO post中描述的两种方法在UWP中不起作用。 (CroppedBitmap
类不工作,ImageBrush
类没有Viewbox
属性)。我试过Clip
与RenderTransform
,但还没有成功。下一步该去哪里?在Windows商店应用
回答
正如@ibebbs所说,Win2D是在UWP中使用精灵的好选择。 Win2D是一款易于使用的Windows运行时API,可用于GPU加速的即时模式2D图形渲染。 Win2D中的CanvasSpriteBatch Class针对精灵场景进行了优化。
CanvasSpriteBatch允许更高效地被多个位图和具有比DrawImage API更好的性能,特别是当许多精灵在连续使用同一源位图绘制。 CanvasSpriteBatch支持以下功能:
- 精灵可以用自己的位置,缩放,旋转和色调(Draw Overload和DrawFromSpriteSheet Overload)
- 个别精灵可以水平或垂直翻转绘制。 (CanvasSpriteFlip)
- 的Sprite表(DrawFromSpriteSheet Overload)
- 精灵可以clamped to a source rectangle,不再需要在精灵表精灵之间添加填充。
- 批,可以sorted by bitmap获得更好的性能。
有关如何使用CanvasSpriteBatch更多信息,请参阅CanvasSpriteBatch Class document也Sprite Sheets sample在GitHub上。
更新:
如果你不想使用Win2D,一个简单的方法才达到你想要使用ImageBrush与Transform什么样子如下:
<Rectangle Width="128" Height="192">
<Rectangle.Fill>
<ImageBrush AlignmentX="Left"
AlignmentY="Top"
ImageSource="Assets/WizardIdleRight.png"
Stretch="None">
<ImageBrush.Transform>
<TranslateTransform x:Name="SpriteSheetOffset" X="0" Y="-384" />
</ImageBrush.Transform>
</ImageBrush>
</Rectangle.Fill>
</Rectangle>
这里我在Sprite Sheets sample使用的WizardIdleRight.png,我们可以改变TranslateTransform送偏移我们想要的精灵如何。
谢谢Jay,非常翔实。我正在开发的游戏是一款简单的纸牌游戏,我将所有52张卡片图像放在一个PNG中。我正在寻找的是将该图像作为应用程序级资源加载,然后为每个“Image”元素分配集合“Clip”属性以显示相应的卡片。对我来说,Win2D听起来像是一把更大的枪,用于更激烈,互动和实时的游戏。或者是? – dotNET
只是出于好奇,如果您在XAML中编写此代码,为什么不使用DataTemplate卡,并使用适合图形资源的套装字形(或更好的符号字体)。这将导致尺寸更小的应用程序在各种分辨率下更好地扩展。 – ibebbs
@dotNET如果你不想使用Win2D,使用ImageBrush和Transform可能是一种简单的方法。请检查我更新的答案。 –
- 1. 禁用Windows应用商店
- 2. ItemGridView ItemClick在Windows应用商店应用
- 3. Windows商店应用程序
- 4. Windows应用商店蓝牙
- 5. Windows商店应用导航
- 6. ServicePoint.Expect100Continue为Windows商店应用
- 7. Windows商店应用游戏
- 8. Windows 8商店应用
- 9. 如何让Windows应用商店应用启动另一个Windows应用商店
- 10. Windows应用商店帐户和Windows Phone商店帐户
- 11. 在Windows应用商店中使用Sql
- 12. Windows应用商店应用启动
- 13. VirtualKey C#Windows应用商店应用
- 14. Windows应用商店应用UI更新
- 15. Windows应用商店应用名称
- 16. LibSpotify和Windows应用商店应用
- 17. Windows应用商店应用中的DynamicResource?
- 18. Windows应用商店应用和F#
- 19. Windows应用商店应用开发
- 20. Windows应用商店应用联网
- 21. Windows应用商店应用和WebApi
- 22. Windows应用商店应用更新GridView
- 23. Windows应用商店应用GridView性能
- 24. 线程在Windows商店应用
- 25. 裹电网ItemHeight在Windows商店应用
- 26. 在Windows应用商店显示html
- 27. Base64ToImage在Windows 8商店应用程序
- 28. Windows 8商店 - 调试应用程序从商店下载
- 29. Windows 8商店
- 30. 面向Windows应用商店的Facebook SDK?
你能澄清的是什么你实际上是想干什么?通过精灵,我猜你想要一个包含所有状态下所有精灵图像的大型位图,然后试图动态更改裁剪以执行精灵动画。如果这确实是你正在试图做的话,我会建议调查[Win2D(https://github.com/Microsoft/Win2D),这是更具针对性什么你仿佛是试图做。 – ibebbs
@ibebbs:你的理解是正确的。在WPF和SL中,我们可以在纯XAML中完成此操作,而无需编写任何代码(请参阅我在问题中发布的SO链接)。我在Google上看到了Win2D。看起来我不得不使用它作为最后的手段,如果我找不到更简单的方法。 – dotNET