locked
Создание изображений в цикле [C#] RRS feed

  • Вопрос

  • ...	
    private Image[,] _img = new Image[100, 100];
    
    private void DrawMap()
    {
       for ( int i = 0; i < 100; i++)
          for (int j = 0; j < 100; j++)
          {
             _img[i, j] = new Image();
             _img[i, j].Margin = new Thickness(i * 64, j * 64, 0, 0);
             _img[i, j].Height = 64;
             _img[i, j].Width = 64;
             _img[i, j].Name = string.Format("mp", i, j);
             _img[i, j].Tag = i;
             _img[i, j].Source = imageK.Source;
       }
    }
    ...
    В результате ничего не происходит... В чем ошибка?


    5 ноября 2012 г. 13:27

Ответы

  •          _img[i, j].Name = string.Format("mp", i, j);
    

    Для начала в этой строчке вряд ли произойдет что-то дельное. Потому что у Вас не указаны местозаполнители для форматируемой строки. Например так:

             _img[i, j].Name = string.Format("mp {0}-{1}", i, j);
    


    DreamSpark Premium User

    • Помечено в качестве ответа Abolmasov Dmitry 19 ноября 2012 г. 11:01
    5 ноября 2012 г. 14:00
  • А поточнее описать?
    Вам именно их отобразить нужно? Судя по названию, карта? 100 на 100?
    64px * 100 = 6400, ого монитор :)

    Просто, если их нужно поредактировать, тогда достаточно заюзать WritableBitmap.

    >>В результате ничего не происходит... В чем ошибка?
    а что должно происходить? Попробуйте добавить хотя бы созданные контролы в какой-нить container (Grid хотя бы)

    <Button Content="Load" Click="ButtonBase_OnClick"></Button>
            <Grid
                x:Name="buttonsContainer">
                       </Grid>
    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
            {
                var ImgArr = new Image[10, 10];
    
                int shiftX = 41;
                int shiftY = 41;
                for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        var image = new Image();
    
                        var uri = new Uri("ms-appx:///Assets/confirm.png", UriKind.Absolute);
                        var result = new BitmapImage();
                        result.UriSource = uri;
                        image.Source = result;
                        image.Margin = new Thickness(i * shiftY, j * shiftX, 0,0);
                        image.Height = shiftY;
                        image.Width = shiftX;
    
                        ImgArr[i, j] = image;
    
                        buttonsContainer.Children.Add(image);
                    }
                }
            }




    6 ноября 2012 г. 22:04

Все ответы

  •          _img[i, j].Name = string.Format("mp", i, j);
    

    Для начала в этой строчке вряд ли произойдет что-то дельное. Потому что у Вас не указаны местозаполнители для форматируемой строки. Например так:

             _img[i, j].Name = string.Format("mp {0}-{1}", i, j);
    


    DreamSpark Premium User

    • Помечено в качестве ответа Abolmasov Dmitry 19 ноября 2012 г. 11:01
    5 ноября 2012 г. 14:00
  • ой)
    Это да, но не в этом проблема, не работает все-равно.
    5 ноября 2012 г. 14:28
  • А что вам именно нужно сделать? Отобразить 10к контролов типа Image? Или все-таки нужно создать массив, хранящий 10к изображений?


    DreamSpark Premium User


    5 ноября 2012 г. 14:50
  • Мне нужно создать, отобразить, изменить, сохранить :)
    5 ноября 2012 г. 14:57
  • А поточнее описать?
    Вам именно их отобразить нужно? Судя по названию, карта? 100 на 100?
    64px * 100 = 6400, ого монитор :)

    Просто, если их нужно поредактировать, тогда достаточно заюзать WritableBitmap.

    >>В результате ничего не происходит... В чем ошибка?
    а что должно происходить? Попробуйте добавить хотя бы созданные контролы в какой-нить container (Grid хотя бы)

    <Button Content="Load" Click="ButtonBase_OnClick"></Button>
            <Grid
                x:Name="buttonsContainer">
                       </Grid>
    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
            {
                var ImgArr = new Image[10, 10];
    
                int shiftX = 41;
                int shiftY = 41;
                for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        var image = new Image();
    
                        var uri = new Uri("ms-appx:///Assets/confirm.png", UriKind.Absolute);
                        var result = new BitmapImage();
                        result.UriSource = uri;
                        image.Source = result;
                        image.Margin = new Thickness(i * shiftY, j * shiftX, 0,0);
                        image.Height = shiftY;
                        image.Width = shiftX;
    
                        ImgArr[i, j] = image;
    
                        buttonsContainer.Children.Add(image);
                    }
                }
            }




    6 ноября 2012 г. 22:04
  • Пожайлуйста, не забывайте отмечать ответ, решающий вашу проблему.

    Для связи [mail]

    19 ноября 2012 г. 11:01