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(); } }
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(); }
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(); } }
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(); } }
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(); }