Exemple #1
0
        private void mnuIconListProperties_Click(object sender, EventArgs e)
        {
            IconListViewItem item = iconList.SelectedItems[0] as IconListViewItem;

            if (item != null)
            {
                ShowIconProperties(item.Icon);
            }
        }
        private void BuildListView()
        {
            //reset the list view items
            lvwIcons.Items.Clear();

            //validate the path exists
            var targetPath = txtPathToExtractFrom.Text;

            if (!File.Exists(targetPath))
            {
                return;
            }

            lvwIcons.BeginUpdate();
            try
            {
                //icon files don't need extraction
                if (string.Equals(Path.GetExtension(targetPath), ".ico", StringComparison.InvariantCultureIgnoreCase))
                {
                    _icons = new[] { new Icon(targetPath) };
                }
                else
                {
                    var iconExtraction = new IconExtractor(targetPath);
                    _icons = iconExtraction.GetAllIcons();
                }

                foreach (var i in _icons)
                {
                    var splitIcons = IconUtil.Split(i);

                    var largestIcon = splitIcons.OrderByDescending(k => k.Width)
                                      .ThenByDescending(k => Math.Max(k.Height, k.Width))
                                      .First();

                    var item = new IconListViewItem {
                        Bitmap = IconUtil.ToBitmap(largestIcon)
                    };
                    i.Dispose();
                    largestIcon.Dispose();

                    lvwIcons.Items.Add(item);
                }
            }
            catch
            {
                // ignored
            }
            finally
            {
                lvwIcons.EndUpdate();
            }
        }
Exemple #3
0
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var path = Path.GetTempPath() + Path.ChangeExtension(Path.GetFileName(_name), @".png");

            if (File.Exists(path))
            {
                try
                {
                    File.Delete(path);
                }
                catch
                {
                    MessageBox.Show(@"Faild to delete: " + path);
                }
            }

            if (listView1.SelectedIndices.Count <= 0)
            {
                //exit = true;
                return;
            }
            var intselectedindex = listView1.SelectedIndices[0];

            if (intselectedindex < 0)
            {
                return;
            }
            //var tt = listView1.FocusedItem.Index;
            IconListViewItem item = listView1.SelectedItems[0] as IconListViewItem;

            if (item != null)
            {
                var bit = item.Bitmap;
                bit.Save(path, ImageFormat.Png);
                //exit = false;
            }
            Dispose();
        }
Exemple #4
0
        private void BuildListView()
        {
            //reset the list view items
            lvwIcons.Items.Clear();

            //validate the path exists
            var targetPath = txtPathToExtractFrom.Text;
            if (!File.Exists(targetPath))
                return;

            lvwIcons.BeginUpdate();
            try
            {
                //icon files don't need extraction
                if (string.Equals(Path.GetExtension(targetPath), ".ico", StringComparison.InvariantCultureIgnoreCase))
                {
                    _icons = new[] {new Icon(targetPath)};
                }
                else
                {
                    var iconExtraction = new IconExtractor(targetPath);
                    _icons = iconExtraction.GetAllIcons();
                }

                foreach (var i in _icons)
                {
                    var splitIcons = IconUtil.Split(i);

                    var largestIcon = splitIcons.OrderByDescending(k => k.Width)
                        .ThenByDescending(k => Math.Max(k.Height, k.Width))
                        .First();

                    var item = new IconListViewItem {Bitmap = IconUtil.ToBitmap(largestIcon)};
                    i.Dispose();
                    largestIcon.Dispose();

                    lvwIcons.Items.Add(item);
                }
            }
            catch
            {
                // ignored
            }
            finally
            {
                lvwIcons.EndUpdate();
            }
        }
Exemple #5
0
        private void btnPickFile_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                Filter = "Icons (*.exe;*.ico;*.dll;*.lnk)|*.exe;*.ico;*.dll;*.lnk|All files (*.*)|*.*",
                //DereferenceLinks = true, // This thing doesn't work sadly, idk why
                Title = "Pick an icon (.ico) or a file containing an icon (.exe, .dll)"
            })
            {
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    FileInfo fileInfo = new FileInfo(openFileDialog.FileName);

                    // Dereference link cause MS can't make it work on OpenFileDialog
                    if (fileInfo.Extension == ".lnk")
                    {
                        iconPickerDialog.FileName = Symlink.ResolveShortcut(fileInfo.FullName);
                    }
                    else
                    {
                        iconPickerDialog.FileName = fileInfo.FullName;
                    }

                    if (iconPickerDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        var fileName = iconPickerDialog.FileName;
                        var index    = iconPickerDialog.IconIndex;

                        // Set FileName to further retrieve it
                        FileName = Path.GetFileNameWithoutExtension(fileName);

                        Icon   icon       = null;
                        Icon[] splitIcons = null;
                        try
                        {
                            if (Path.GetExtension(iconPickerDialog.FileName).ToLower() == ".ico")
                            {
                                icon = new Icon(iconPickerDialog.FileName);
                            }
                            else
                            {
                                var extractor = new IconExtractor(fileName);
                                icon = extractor.GetIcon(index);
                            }

                            splitIcons = IconUtil.Split(icon);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                        txtFileName.Text = string.Format("{0}, #{1}, {2} variations", fileName, index, splitIcons.Length);

                        // Update icons.

                        Icon = icon;
                        icon.Dispose();

                        lvwIcons.BeginUpdate();
                        ClearAllIcons();

                        foreach (var i in splitIcons)
                        {
                            // Exclude all icons which size is > 256 (Throw "Generic GDI+ error" when converting if size > 128x128)
                            if (i.Width > 128 || i.Height > 128)
                            {
                                continue;
                            }

                            var item = new IconListViewItem();
                            var size = i.Size;
                            var bits = IconUtil.GetBitCount(i);
                            item.ToolTipText = string.Format("{0}x{1}, {2} bits", size.Width, size.Height, bits);
                            item.Bitmap      = IconUtil.ToBitmap(i);
                            i.Dispose();

                            lvwIcons.Items.Add(item);
                        }

                        lvwIcons.EndUpdate();
                    }
                    else if (firstOpen)
                    {
                        DialogResult = DialogResult.Cancel;
                        this.Hide();
                    }
                }
            }
        }
        private void btnPickFile_Click(object sender, EventArgs e)
        {
            if (iconPickerDialog.ShowDialog(this) == DialogResult.OK)
            {
                var fileName = iconPickerDialog.FileName;
                var index    = iconPickerDialog.IconIndex;

                Icon   icon       = null;
                Icon[] splitIcons = null;
                try
                {
                    if (Path.GetExtension(iconPickerDialog.FileName).ToLower() == ".ico")
                    {
                        icon = new Icon(iconPickerDialog.FileName);
                    }
                    else
                    {
                        var extractor = new IconExtractor(fileName);
                        icon = extractor.GetIcon(index);
                    }

                    splitIcons = IconUtil.Split(icon);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                txtFileName.Text = String.Format("{0}, #{1}, {2} variations", fileName, index, splitIcons.Length);

                // Update icons.

                Icon = icon;
                icon.Dispose();

                lvwIcons.BeginUpdate();
                ClearAllIcons();

                foreach (var i in splitIcons)
                {
                    // Exclude all icons which size is > 256 (Throw "Generic GDI+ error" when converting if size > 128x128)
                    if (i.Width > 128 || i.Height > 128)
                    {
                        continue;
                    }

                    var item = new IconListViewItem();
                    var size = i.Size;
                    var bits = IconUtil.GetBitCount(i);
                    item.ToolTipText = String.Format("{0}x{1}, {2} bits", size.Width, size.Height, bits);
                    item.Bitmap      = IconUtil.ToBitmap(i);
                    i.Dispose();

                    lvwIcons.Items.Add(item);
                }

                lvwIcons.EndUpdate();
            }
            else if (firstOpen)
            {
                DialogResult = DialogResult.Cancel;
                this.Hide();
            }
        }
Exemple #7
0
        private void btnSelectIcon_Click(object sender, EventArgs e)
        {
            DialogResult result = this.iconPickerDialog.ShowDialog(this);
            if (result != DialogResult.OK)
            {
                return;
            }

            this.txtSelectedIcon.Text = this.iconPickerDialog.Filename + ", " + this.iconPickerDialog.IconIndex.ToString();

            Icon icon = null;
            Icon[] splitIcons = null;
            try
            {
                if (Path.GetExtension(this.iconPickerDialog.Filename).ToLower() == ".ico")
                {
                    icon = new Icon(this.iconPickerDialog.Filename);
                }
                else
                {
                    using (IconExtractor extractor = new IconExtractor(this.iconPickerDialog.Filename))
                    {
                        icon = extractor.GetIcon(this.iconPickerDialog.IconIndex);
                    }
                }

                splitIcons = IconExtractor.SplitIcon(icon);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "IconExtractor Demo - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Update Icons.
            this.Icon = icon;
            //this.notifyIcon.Icon = icon;

            // Update ListView
            this.lvwIcons.BeginUpdate();
            ClearAllIcons();

            this.lvwIcons.Tag = icon;
            foreach (Icon i in splitIcons)
            {
                IconListViewItem item = new IconListViewItem();
                item.ToolTipText = String.Format("{0} x {1}, {2}bits", i.Width, i.Height, GetIconBitDepth(i));
                item.Icon = i;

                this.lvwIcons.Items.Add(item);
            }

            this.lvwIcons.EndUpdate();
        }