在网格中平铺图像
本文关键字:图像 网格 | 更新日期: 2023-09-27 18:02:30
我如何在Grid
容器中多次平贴单个图像(小尺寸),使Grid
看起来是持有单个图像而不是多个图像平贴在一起?
我曾见过一些方法,通过位元化多次复制较小的图像来创建单个图像,但这个过程在计算上很昂贵。我不想创造一个更大的形象;我只是想多次使用相同的单个映像,以便进程不需要CPU周期。
如何做到这一点?
UPDATE:似乎没有简单的方法可以做到以上。因此,作为一种解决方案,我如何通过在WP8.1 RT中拼接多个较小的图像来创建单个较大的图像?
在这段代码中,我只实例化了一个位图图像。不过,我不确定,如果它是内存节省。
{
int n = 5;
Grid grid = new Grid();
BitmapImage bitmapImage = new BitmapImage(new Uri("pack://application:,,,/StackOverflowTest;Component/1.jpg"));
for (int i = 0; i < n; i++)
{
grid.ColumnDefinitions.Add(new ColumnDefinition {Width = GridLength.Auto});
grid.RowDefinitions.Add(new RowDefinition {Height= GridLength.Auto});
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Image image = new Image { Source = bitmapImage };
Grid.SetRow(image, i);
Grid.SetColumn(image, j);
grid.Children.Add(image);
}
}
containerOfGrid.Children.Add(grid);
}
编辑:
我已经检查过了,在我看来,在立即窗口中,源映像没有被分配多次。
((System.Windows.Controls.Image)((new System.Linq.SystemCore_EnumerableDebugView(((System.Windows.Controls.Panel)(grid)).Children)).Items[0]))._bitmapSource.GetHashCode()
37855919
((System.Windows.Controls.Image)((new System.Linq.SystemCore_EnumerableDebugView(((System.Windows.Controls.Panel)(grid)).Children)).Items[1]))._bitmapSource.GetHashCode()
37855919
((System.Windows.Controls.Image)((new System.Linq.SystemCore_EnumerableDebugView(((System.Windows.Controls.Panel)(grid)).Children)).Items[0])).GetHashCode()
19914648
((System.Windows.Controls.Image)((new System.Linq.SystemCore_EnumerableDebugView(((System.Windows.Controls.Panel)(grid)).Children)).Items[1])).GetHashCode()
3378500