示例#1
0
        private void AddThumbnail(ThumbnailListViewItem item)
        {
            if (Disposing)
            {
                return;
            }

            if (this.InvokeRequired)
            {
                AddThumbnailDelegate d = new AddThumbnailDelegate(AddThumbnail);
                this.Invoke(d, new object[] { item });
            }
            else
            {
                Image image = GetThumbnail(item.Bitmap);

                LargeImageList.Images.Add(image);                 //Images[i].repl

                int imageIndex = LargeImageList.Images.Count - 1;
                int itemIndex  = 0;

                // 이 태그에 맞는 아이템을 찾자
                for (int i = 0; i < Items.Count; i++)
                {
                    if (Items[i].Tag == item)
                    {
                        itemIndex = i;
                    }
                }

                Items[itemIndex].ImageIndex = imageIndex;

                //Logger.Log("item {0}, name {1}, image {2}", itemIndex, item.Name, imageIndex);
            }
        }
示例#2
0
        private void AddThumbnail(ThumbnailListViewItem item)
        {
            if (Disposing) return;

            if (this.InvokeRequired)
            {
                AddThumbnailDelegate d = new AddThumbnailDelegate(AddThumbnail);
                this.Invoke(d, new object[] { item });
            }
            else
            {
                Image image = GetThumbnail(item.Bitmap);

                LargeImageList.Images.Add(image); //Images[i].repl

                int imageIndex = LargeImageList.Images.Count - 1;
                int itemIndex = 0;

                // 이 태그에 맞는 아이템을 찾자
                for (int i = 0; i < Items.Count; i++ )
                {
                    if (Items[i].Tag == item)
                    {
                        itemIndex = i;
                    }
                }

                Items[itemIndex].ImageIndex = imageIndex;

                //Logger.Log("item {0}, name {1}, image {2}", itemIndex, item.Name, imageIndex);
            }
        }
示例#3
0
        public void LoadItems(ThumbnailListViewItem[] items)
        {
            if ((thumbnailLoadWorker != null) && (thumbnailLoadWorker.IsBusy))
                thumbnailLoadWorker.CancelAsync();

            ImageList il = new ImageList();
            il.ImageSize = new Size(thumbnailSize, thumbnailSize);
            il.ColorDepth = ColorDepth.Depth32Bit;
            il.TransparentColor = Color.White;

            LargeImageList = il;

            BeginUpdate();

            Items.Clear();
            LargeImageList.Images.Clear();

            AddDefaultThumbnail();

            foreach (ThumbnailListViewItem item in items)
            {
                ListViewItem lvItem = new ListViewItem(item.Name);
                lvItem.ImageIndex = 0;
                lvItem.Tag = item;

                Items.Add(lvItem);
            }

            EndUpdate();

            if (thumbnailLoadWorker != null)
            {
                // 참고:
                // backgroundworker가 cancel되도록 되어있지만 실질적으로 runworkercompleted가 호출되기 전까지는
                // 아무것도 할 수 없는 상태(pending)이다. CancellationPending된 상태라서 이 상태에서는
                // backgroundworker는 동작하지 않는다. (completed가 호출되기 전 까지)
                if (!thumbnailLoadWorker.CancellationPending)
                    thumbnailLoadWorker.RunWorkerAsync(items);
            }
        }