программы, а используется как контейнер, из которого по мере необходимости извлекаются хранимые изображения. Как правило, данный элемент используется совместно с такими элементами управления, как ListView
, TreeView
и ToolBar
.
Изображения можно добавлять в элемент управления во время работы приложения. Для этого используется метод Add
, который входит в состав члена класса Images
. Сами картинки могут располагаться как в отдельных файлах, так и в ресурсах приложения. В листинге 3.16 показано, как можно добавить картинку из ресурсов в ImageList
, а затем отобразить ее в элементе интерфейса PictureBox
.
Bitmap image = new Bitmap(Assembly.GetExecutingAssembly(),
GetManifestResourceStream(@'ImageList_CS.home.gif'));
imgList.Images.Add(image);
picTest.Image = imgList.Images[0];
Изображение добавляется в начало списка, и его порядковый номер будет равен нулю. Если в ImageList
уже было одно изображение, то новая картинка будет иметь порядковый номер, равный единице. Это иллюстрируется листингом 3.17.
private void butFromImageListClick(object sender, EventArgs e) {
picTest.Image = imgList.Images[1];
}
Все картинки, находящиеся в ImageList
, имеют одинаковый размер. По умолчанию используется размер 16×16 пикселов. Разработчик может изменить размеры изображений, используя свойство ImageSize
. Если менять отображаемые картинки при помощи таймера, то можно даже создать небольшую мультипликацию. Для этого достаточно список рисунков заполнить набором изображений, а затем поочередно отображать их в графическом поле.
Элемент PictureBox
Элемент управления PictureBox
используется для отображения графики. Данный элемент имеет ограниченную функциональность и не позволяет растягивать картинку в соответствии с размерами графического поля.
В листинге 3.18 приведен фрагмент кода, который позволяет загрузить изображение из графического файла.
private void butFromFile_Click(object sender, EventArgs e) {
picTest.Image = new Bitmap(@'Windowsanner.gif');
}
Если использовать этот способ для добавления картинки, то нужно добавить изображение в проект и для свойства Build Action
в окне свойств Properties
задать значение Content
. В процессе подготовки приложения к инсталляции изображение будет рассматриваться как часть программы. В рассмотренном примере использовалась готовая картинка, которая находится в папке Windows
.
Также можно загрузить изображение из ресурсов приложения. В этом случае надо добавить картинку в проект и для свойства Build Action
задать значение Embedded Resource
. Тогда не придется специально включать изображения в состав инсталлятора. В листинге 3.19 приведен пример, иллюстрирующий добавление изображения из ресурсов.
private void butRes_Click(object sender, EventArgs e) {
// Загружаем из ресурсов
picTest.Image = new Bitmap(Assembly.GetExecutingAssembly().
GetManifestResourceStream('PictureBox_CS.kristina.jpg'));
}
Элемент ImageList
имеет свойство ImageSize
, которое задает размеры хранимых изображений. Перед загрузкой картинки в графическое поле можно установить требуемые размеры изображения с помощью данного свойства, как показано в листинге 3.20.
private void butImgList_Click(object sender, EventArgs e) {
// изменяем размеры картинки
imageList1.ImageSize = new System.Drawing.Size(160, 120);
// загружаем картинку с измененными размерами
picTest.Image = imageList1.Images[0];
}
На рис. 3.11 показан внешний вид приложения, в котором для работы с изображениями применяются все три описанных варианта.
Рис. 3.11. Пример работы с элементом PictureBox
Элемент ListView
Элемент управления ListView
похож на элемент ListBox
, но вместо обычного текста данный элемент может показывать изображения. Фактически, правая часть рабочего окна Проводника в Windows XP является типичным примером использования этого органа управления. Элементы в ListView
могут отображаться в виде таблицы, списка, а также как группа крупных и мелких значков. За способ отображения содержимого отвечает свойство View
. Значение Details
позволяет отображать содержимое в виде таблицы, значение List
создает список, значение LargeIcon
позволяет отображать элементы списка в виде больших пиктограмм, а значение SmallIcon
отображает их как маленькие пиктограммы.
В режиме Details
элемент управления ListView
позволяет создавать дополнительные столбцы. Их можно добавлять как во время проектирования, так и во время исполнения программы. Пример добавления столбцов во время работы приложения приведен в листинге 3.21.
private void Form1_Load(object sender, EventArgs e) {
// Устанавливаем нужный вид
listView1.View = View.Details;
// Выделяем всю строку при выделении любого элемента
listView1.FullRowSelect = true;
ColumnHeader columnHeader1 = new ColumnHeader();
ColumnHeader columnHeader2 = new ColumnHeader();
ColumnHeader columnHeader3 = new ColumnHeader();
columnHeader1.Text = 'Фамилия';
columnHeader2.Text = 'Имя';