我正在开发一个使用一堆图像的 WinRT 应用程序。在图像的一部分中,我显示了具有较大版本的图像缩略图。
这些缩略图的图像源是相应的大图像,即 1024x768。调整大小是在 C# 中为 Image 元素上的缩略图动态完成的。我也保持了 4:3 的纵横比。
这是 WinRT 调整图像大小的唯一方法,还是有办法以更少的像素化更优雅地动态调整图像元素的大小?
PS:我也无法创建较小版本的图像,原因之一是缩略图的大小是动态的,取决于屏幕上的缩略图数量和屏幕分辨率。
这是我的自动调整大小代码。
private void canvasObject()
{
for (int i = 1; i <= maxCards; i++)
{
objectList.Add(i);
}
Double h,w, hp=0,wp=0,hm;
w = ((objectCanvas.ActualWidth / 9));
h = (w * (4 / 3));
hm = ((objectCanvas.ActualHeight / 3)-h);
int count = 0;
for (int i = 0; i <= 3;i++)
{
wp = 0;
for (int j = 0; j < 9 && count < maxCards; j++)
{
count++;
Card c = new Card();
ImageSource imgSrc1;
Random rnd = new Random();
int rNum = rnd.Next(1, objectList.Count);
imgSrc1 = new BitmapImage(new Uri(@"ms-appx:/Assets/Images/Alphabets/Cards/" + (char)(objectList[rNum-1] + 96) + ".png", UriKind.Absolute));
c.objectImg.Name = objectList[rNum-1].ToString();
objectList.Remove(objectList[rNum-1]);
c.objectImg.SetValue(Image.SourceProperty, imgSrc1);
c.objectImg.Width = w;
c.objectImg.Height = h;
c.objectImg.Margin = new Thickness(10);
c.objectImg.SetValue(Canvas.LeftProperty,wp);
c.objectImg.SetValue(Canvas.TopProperty, hp);
wp += w;
c.objectImg.Tapped += objectImg_Tapped;
objectCanvas.Children.Add(c.objectImg);
}
hp += h+hm;
}
}
以为我不觉得这是代码的问题,因为 XAML 中的一些图像即使被拉伸到统一也看起来像素化。我什至尝试使用更小的图像到它们的确切大小,但显然我的应用程序上的小图像正在像素化。但是在 2560x1440 res 上运行时,图像看起来与预期一样。