Вопрос:

Нарисуйте границу для изображения в списке

c# .net image listview drawing

2374 просмотра

1 ответ

48 Репутация автора

В древовидной структуре после события выбора я заполняю вид списка изображениями.
Я хочу отформатировать эти изображения и поместить вокруг каждого изображения черную цветную рамку.

   private void TreeView1_Select(object sender, EventArgs e) {
        if (folder != null && System.IO.Directory.Exists(folder)) {

            DirectoryInfo dir = new DirectoryInfo(@folder);
            foreach (FileInfo file in dir.GetFiles()) {
                try {
                    imageList.Images.Add(Image.FromFile(file.FullName));
                } catch {
                    Console.WriteLine("This is not an image file");
                }
            }

            for (int j = 0; j < imageList.Images.Count; j++) {
                this.ListView1.Items.Add("Item" + j);
                this.ListView1.Items[j].ImageIndex = j;
            }

            this.ListView1.View = View.LargeIcon;
            this.ListView1.LargeImageList = imageList;
            this.ListView1.DrawItem += 
                new DrawListViewItemEventHandler(ListView1_DrawItem);

        }
    }

    private void ListView1_DrawItem(object sender, DrawListViewItemEventArgs e) 
    {

    }
Автор: rockrule Источник Размещён: 06.10.2009 07:47

Ответы (1)


1 плюс

37625 Репутация автора

Решение

Я бы добавил границу, используя Graphicsобъект сразу после загрузки изображений из файла:

РЕДАКТИРОВАТЬ : изменил код, это работает для меня ...

    private void TreeView1_Select(object sender, EventArgs e) {
        if (folder != null && System.IO.Directory.Exists(folder)) {

            DirectoryInfo dir = new DirectoryInfo(@folder);
            foreach (FileInfo file in dir.GetFiles()) {

                Image img = new Bitmap(Image.FromFile(file.FullName));
                using (Graphics g = Graphics.FromImage(img)){
                    g.DrawRectangle(Pens.Black, 0, 0, img.Width - 2, img.Height - 2);
                }
                imageList.Images.Add(img);

ПРИМЕЧАНИЕ : копирование изображения предназначено; если я изменю код на

    Image img = (Bitmap)Bitmap.FromFile("test.bmp");

как предлагается в комментариях, я получаю исключение, говорящее: «Графический объект не может быть создан из изображения, имеющего индексированный формат пикселей».

Автор: Paolo Tedesco Размещён: 06.10.2009 08:04
Вопросы из категории :
32x32