C# 仅显示图像中图像文件的特定部分
我希望能够有一个图像对象渲染只是图像的一部分,我将通过编程控制。例如,到目前为止,我所掌握的是:C# 仅显示图像中图像文件的特定部分,c#,image,windows-phone-7,C#,Image,Windows Phone 7,我希望能够有一个图像对象渲染只是图像的一部分,我将通过编程控制。例如,到目前为止,我所掌握的是: <Image Grid.Column="1" Grid.Row="1" Grid.RowSpan="3" Height="160" HorizontalAlignment="Right" Name="avatarImage" Stretch="None" VerticalAlignment="Center" Width="160" Source="/Crystal
<Image Grid.Column="1" Grid.Row="1" Grid.RowSpan="3" Height="160"
HorizontalAlignment="Right" Name="avatarImage" Stretch="None"
VerticalAlignment="Center" Width="160"
Source="/Crystal%20Cloud;component/data/images/characters.png"
Margin="0,0,40,0" />
我希望一次只渲染一个角色,并使用按钮更改渲染的角色。我可以这样做吗?如果可以,怎么做?您肯定可以使用ImageBrush.Transform来提取您感兴趣的位图部分,如果您不需要非常高的帧速率,这是一种方法 但是,如果需要优化帧速率,则可以从精灵工作表中动态提取各个位图,并缓存这些位图,并根据需要显示它们。下面的博客文章提供了一些代码,您可以使用这些代码提取各个位图,然后缓存这些位图
请记住,这里性能的关键在于缓存位图,而不是每次需要新图像时都费力地提取它们。您完全可以使用ImageBrush.Transform提取您感兴趣的位图部分,如果你不需要很高的帧速率,那就是最好的选择 但是,如果需要优化帧速率,则可以从精灵工作表中动态提取各个位图,并缓存这些位图,并根据需要显示它们。下面的博客文章提供了一些代码,您可以使用这些代码提取各个位图,然后缓存这些位图
请记住,这里性能的关键在于缓存位图,而不是每次需要新图像时都费力地提取它们。您还可以将图像放置在画布中,并为其可见部分定义一个剪辑。然后,要设置角色动画,可以通过编程按时间间隔更改图像的顶部和左侧:
<Canvas Width="200" Height="100">
<Canvas.Clip>
<RectangleGeometry Rect="0, 0, 200, 100"/>
</Canvas.Clip>
<Image x:Name="imgCharacter" Source="..." Canvas.Left="..." Canvas.Top="..." />
</Canvas>
imgCharacter.SetValue(Canvas.LeftProperty, currentFrame.Left);
imgCharacter.SetValue(Canvas.LeftProperty, currentFrame.Top);
您还可以将图像放置在画布中,并为其可见部分定义剪辑。然后,要设置角色动画,可以通过编程按时间间隔更改图像的顶部和左侧:
<Canvas Width="200" Height="100">
<Canvas.Clip>
<RectangleGeometry Rect="0, 0, 200, 100"/>
</Canvas.Clip>
<Image x:Name="imgCharacter" Source="..." Canvas.Left="..." Canvas.Top="..." />
</Canvas>
imgCharacter.SetValue(Canvas.LeftProperty, currentFrame.Left);
imgCharacter.SetValue(Canvas.LeftProperty, currentFrame.Top);
这应该有帮助:这应该有帮助: