Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Даешь в ListBox картинки!


Автор: Kakadu 23.10.2008, 10:34
Надо найти какую-нить компоненту, типа ListBox, куда можно запихнуть список картинок. Знаю, что в Borland C++Builder, за это отвечал ListBox, но вот в реализации на С# я испытываю некотрые трудности. Не получается... 
Вопрос: как реализовать это? (или посоветуйте иную компоненту какую-нить)

Автор: Partizan 23.10.2008, 10:42
Kakadu, Можно просто перекрыть отрисовку каждого элемента ListBox.

Автор: Kakadu 23.10.2008, 10:47
Идею я понял, но это похоже на извращение......

Автор: QryStaL 23.10.2008, 10:56
Цитата(Kakadu @  23.10.2008,  10:34 Найти цитируемый пост)
Надо найти какую-нить компоненту, типа ListBox, куда можно запихнуть список картинок.

ListView

Автор: Freak_FB 23.10.2008, 11:49
ListView, насколько я знаю, отображает иконки. То есть 32*32, 48*48. Шото вроде того.
Лучше всего всё-таки переопределить отрисовку в ListBox.
Вот пример кода для отображения картинок:
Код

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    int pos = e.Index;
    e.DrawBackground();
    e.Graphics.DrawImage((Image)listBox1.Items[pos], new Point(5, e.Bounds.Top + 5));
    e.Graphics.DrawString(string.Format("Item #{0}", pos), new Font("Comic Sans MS", 32.0f,
        FontStyle.Bold | FontStyle.Italic), Brushes.DarkOliveGreen, new Point(125, e.Bounds.Top + 5));
    e.DrawFocusRectangle();
}

private void Form1_Load(object sender, EventArgs e)
{
    listBox1.Items.AddRange(new object[] { imageList1.Images[0], imageList1.Images[1], imageList1.Images[2], imageList1.Images[3] });
}

Использовать для ListBox DrawMode - OwnerDrawFixed. Высоту элемента ItemHeight - 100. Картинки в ImageList размерами 100 * 100.

P.S.: кто подскажет как избавиться от мерцания при изменении размеров формы, а, следовательно, при изменении размеров ListBox?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)