Qualité de Icon.Save

MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012 - 26 août 2009 à 04:18
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009 - 31 août 2009 à 10:46
j'essais de faire un petit programme qui permet d'extraire une icone dans un picturebox, et la sauvegarder dans un fichier ico.
tous marche bien, on commence par ouvrir un ficher :
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            Dim MyIcon As Icon = Nothing
            MyIcon = Icon.ExtractAssociatedIcon(OpenFileDialog1.FileName)
            PictureBox1.Image = MyIcon.ToBitmap
        End If

premiere partie, parfait.

maintenant quand je click un bouton :
        Dim sfd As New SaveFileDialog
        sfd.Filter = "*.ico|*.ico"
        If Not PictureBox1.Image Is Nothing Then
            If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim file As FileStream = New FileStream(sfd.FileName, FileMode.OpenOrCreate)
                MyIcon.Save(file)
                file.Close()
                MyIcon.Dispose()
            End If
        End If


ok. lr probleme que la qualité de l'icone est trop mauvaise. je remarque que la taille du fichier est à 700 octets presque. même si on vois bien l'icone dand le picturebox en haute qualité, mais c'est foutu après le sauvegarde.

ce code est genial parceque il me permet de créer une icone bien determiné (32*32, une seule image) mais le problem c'est la qualité.

quelqun peut m'aider?? merci.
A voir également:

64 réponses

Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 23:09
Si les icones sont tributaires de fichiers de ressources, c'est peut-être au niveau de ces fichiers que se situe la perte.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 23:19
FileStream passe pas chez moi.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 23:21
Autant pour moi
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 23:24
766 octets 4ko sur le disque ton programme impec chez moi?

Je cherche une icone plus grosse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
28 août 2009 à 00:06
Heureusement que j'étais déjà idiot!
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
28 août 2009 à 01:49
oui 766 octets. normalement c 2 ko minimum...
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
28 août 2009 à 08:48
Avec un 8088 on peut pas le voir. C'est pour les nouvelles licenses. Et le pb de couleur c'est rien à coté des ennuis sur ma nouvelle machine. J'ai repris le vieux modèle avec un disque dur à la place de la Flash: je vois un peu moins les défauts.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
28 août 2009 à 18:53
On y parle de fichiers de ressources accessibles en ligne de commande. Je note juste le lien avec notre sujet.
http://www.vbfrance.com/forum/sujet-CHARGEMENT-RESSOURCES-LIGNE-COMMANDES_1352323.aspx
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
29 août 2009 à 23:00
On devait être très fatigués: Si je remplace le système de sauvegarde de texte (FileStream) par pictureBox.image.save
If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
PictureBox1.Image.Save(sfd.FileName)
Ca marche trés bien. Faut laisser l'extension ico.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
29 août 2009 à 23:02
Non j'ai encore tout mélangé. c'est une image, pas une icone ????

Cordialement Nic.
Tant pis pour l'orthographe.
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
30 août 2009 à 17:51
oui c'est une imge, po une icone...
merci entt ^^
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 18:12
Bonjour MiharbiDoNo,

J'en avais assez des manips avec sfd. J'ai mis l'icone dans les ressources et je vise un résultat dans le Debug. Ca donne ca:

Public Class Form1
Dim Mycon As Icon = My.Resources.Filicon
Private Sub Form1_Load() Handles MyBase.Load
PictureBox1.Image = Mycon.ToBitmap
End Sub

Private Sub Form1_Shown() Handles MyBase.Shown
Icon = My.Resources.Filicon
End Sub
End Class


On dirait comme une impasse sur le type icon

'Dim DataFormat As String = _
DataFormats.EnhancedMetafile
'Clipboard.SetData(DataFormat, Mycon)

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 18:22
Post Scriptum

Les admins ont beau changer l'éditeur, ils ne nous empêcheront pas de faire du code.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 18:44
Coller l'image dans Paint

Public Class Form1
Dim Mycon As Icon = My.Resources.Filicon
Private Sub Form1_Load() Handles MyBase.Load
PictureBox1.Image = Mycon.ToBitmap

Dim DataFormat As String = DataFormats.Bitmap
Clipboard.SetData(DataFormat, Mycon.ToBitmap)

End Sub
End Class

Mais pas l'icone sur le bureau.

En plus si je renomme une icone avec le nom qui a servi préalablement pour les essais, je perds la couleur. si je remet un autre nom, la couleur revient. On dirait que windows enregistre l'adresse du fichier exprès pour casser les pieds.(surement dans le registre)
Peut-être la fonction stream fonctionne bien.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 19:19
RECYCLAGE.

On doit trouver une solution: Il faut penser à tous ces pauvre gens qui misent leur carrière sur une suite bureautique qui repose sur une gestion de fichiers et un boot qui fonctionne pas sur un support amovible.
Avec les nouvelles technologies (la ram flash et le cable optique) il est temps de reprendre à partir de la console et remplacer le multi-usage d'un poste par un système de support amovible où chacun serait "root" ou "réseau" suivant ses primitives, et pour encourager le développement de processeurs spécialisés et pas seulement pour l'affichage, mais aussi pour toutes les parties de l'ordinateur qui sont moins amusantes à développer. Qu'est-ce qui se passerait si on remplacait les claviers par des reconnaissances vocales? En France vous risquez rien: vous n'avez même pas le droit de vendre des téléchargements de vidéos en dehors du territoire et du karaté. (en Anglais c'est gratuit, comme microsoft agent). Et quand un étranger dit "Napoléon", il ne parle malheureusement pas de code.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 20:05
Je ne vois plus qu'une solution, mais c' est du bricolage (faudra l'encapsuler au propre je saurais jamais faire ca)
j'explique l'idée:

-Puisque Widows veut absolument garder le contrôle absolu de ses icones, on a qu'a lui coller le "BB"
.
On trouve un Api qui copie les fichiers (je perds confiance
dans le framework) on fait une copie de la ressource (je signale au passage que j'en ai profité pour mettre la ressource dans la barre à la place de l'icone de la form)
On paste la ressource avec un Api, et on change la ressource de la ressource CAD le bitmap, ressource du fichier d'icone par celui qu'on veut. (avec un Api)

Je voulais ajouter l'icone de notifiation avec un petit menu coller pour les essais, mais j'ai peur de surcharger le code.

Cordialement Nic.

Si quelqu'un sait ou trouver l'api, j'ai l'impression qu'il en manque sur mdsn, en particulier pour sauver les métafiles de bitmaps (c'est surement ca les fichiers d'icones, mais le pb viens que le gestionaire de fichiers doit impérativement se mettre à jour chaque fois qu'on bricole une icone.... que j'ai hate d'encapsuler ca.)

http://msdn.microsoft.com/en-us/library/aa383749(VS.85).aspx
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 20:26
http://msdn.microsoft.com/en-us/library/ms649038(VS.85).aspx
For an example, see Example of a Clipboard Viewer.

Si l'exemple permet de vérifier le format du fichier d'icones (jusqu'a maintenant je n'ai que des convictions, aucune certitude absolue)

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 20:34
Mdsn passe en revue chacun de ses types de base: je l'ai déjà fait manuellement sans résultat (pourtant il y a bien qqchose (une icone) dans le pressse papier, mais j'ai un message de l'interface à fenêtres qui reconnait pas le type.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 21:09
Ca m'ennerve.

http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx
Un de ces formats, est le type de données pour crayon optique. Certainement un fournisseur qui a fait le travail. Pour des icones, j'aurais défini, dès windows_1.0 un type standard à tout faire pour stocker les dessins. En bitmap car Bill est pas du genre "vectoriel" sinon Il aurait pas sous-traité ses programmes de jeu d'échec à Alexis. On avait tellement peur de la concurence d'apple avec sa souris qu'il a peut-être planqué le gestionnaire PRIVATE, mais comme il pouvait pas travailler tout seul, il y a forcément un Api pour paramètrer. (Genius doivent savoir, la Genius mouse était réputée avant que microsoft le fabriquant de souris, les écrase de sa concurence, et elle pointait tout ce qu'on voulait. Ils offraient le hook avec la souris. manquait plus que les dessins) Bill aurait la manie de tout vouloir controler que ca m'étonnerais pas, mais on lui pardonne volontier du moment qu'on peut manipuler facilement les icones.
J'espère qu'on va pas devoir écrire un pilote pour les icones. Ce serait ridicule: c'est déjà des fichiers qui seraient à accés direct si toutes les icones étaient de la même dimension. Mais ça parait tellement monstrueux de gérer une liste de fichiers à accès direct de matrices carées de pixels de taille multiple que si je devais faire ca j'aurais pas fixé des limites de un, deux, ..n puissance deux octets. C'est plus facile de faire un éditeur graphique conventionnel. Non. Les icones sont certainement enregistrées au format binaire avec un entête plus simple, et facile a copier dans un bitmap puisqu'injectif.

Faut creuser ca doit être idiot comme d'habitude.

Cordialement Nic.
Tant pis pour l'orthographe.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
30 août 2009 à 21:22
http://msdn.microsoft.com/en-us/library/ms646970(VS.85).aspx

Un curseur n'est-il pas une petite icone avec des propriétés supplémentaires ? comment vérifier l'héritage?

Cordialement Nic.
Tant pis pour l'orthographe.
0
Rejoignez-nous