【发布时间】:2017-02-22 18:02:12
【问题描述】:
因为我对 C# 和 WPF 还很陌生,所以我不知道如何做到这一点。我有一个表格,应该在一个表格中显示 151 个图像(所有 pokemon 第 1 代精灵)。我现在这样做的方式是它显示相同的图像 151 次,而不是所有图像只显示一次。我为此编写的代码如下:
public partial class PokeGame : Window
{
BitmapImage carBitmap = new BitmapImage(new Uri("pack://application:,,,/Images/All_Sprites/001.png", UriKind.Absolute));
{
InitializeComponent();
int imgCount = 151;
int left = 0;
int top = 0;
List<Image> imageList = new List<Image>();
for (int i = 0; i < imgCount; i++)
{
if(i % 10 == 0)
{
if (i != 0)
{
top += 175;
left = 0;
} else
{
top = 0;
left = 0;
}
}
Image img_ding = new Image();
img_ding.Source = carBitmap;
img_ding.Height = 150;
img_ding.Width = 150;
img_ding.Margin = new Thickness(left, top ,0 ,0);
imageList.Add(img_ding);
left += 175;
}
int j = 0;
foreach (Image img in imageList)
{
imageCanvas.Children.Add(img);
j++;
}
}
如您所见,我的代码可能还有很多改进空间。但是,我的问题是:我怎样才能使它不显示相同的图像 151 次,而是显示所有图像(sprite001.png、sprite002.png、sprite003.png 等)?
【问题讨论】:
-
您在一个循环中调用了 151 次
img_ding.Source = carBitmap;。那么你的期望是什么?除此之外,您应该使用 ItemsControl 而不是以编程方式将图像控件添加到 Canvas。 -
叹息。现在你有三个答案告诉你相同的,他们都仍然有多余的
UriKind.Absolute,但没有一个显示如何使用 ItemsControl。如果你有兴趣,我会稍后写一个。您后面的代码将减少到一行。 -
非常感谢提供。我现在已经找到了解决方案,并且可能会出于培训目的尝试其他建议。另外,我修复了 img_ding.Source = carBitmap;现在行。感谢您的评论!