PROFESSIONAL NEWSGROUPSWINDEV , WEBDEV and WINDEV Mobile
[WD15] Reve d'un "dSauveWMF()"
Started by Jonathan, Jan., 26 2010 11:12 AM - 6 replies
Posted on January, 26 2010 - 11:12 AM
Bonjour, dans mon projet je travaille avec des WMF. L'affichage de ceux-ci est simple. Un champ image suffit. Mon problème est que je ne sais pas comment sauvegarder le contenu d'un champ image, au format WMF. Pourtant, il est possible de sauvegarder un graphe dans ce format. Est-ce que quelqu'un arrive à sauvegarder des images en WMF sans avoir recours à des DLL ou des ActiveX ? Y a-t-il moyen de se servir de grSauveWMF() pour le faire ? >Sinon, quel composant externe gratuit peut le faire ?
Posted on January, 26 2010 - 12:40 PM
Bonjour, Pourquoi ne pas utiliser la fonction fSauveTexte(...) ? Bon Dev GH Jonathan a écrit dans le message de news <7fcfd7299a06dac47e3b99e738b4c827@news.pcsoft> :Bonjour, dans mon projet je travaille avec des WMF. L'affichage de ceux-ci est simple. Un champ image suffit. Mon problème est que je ne sais pas comment sauvegarder le contenu d'un champ image, au format WMF. Pourtant, il est possible de sauvegarder un graphe dans ce format. Est-ce que quelqu'un arrive à sauvegarder des images en WMF sans avoir recours à des DLL ou des ActiveX ? Y a-t-il moyen de se servir de grSauveWMF() pour le faire ? >Sinon, quel composant externe gratuit peut le faire ?
Posted on January, 26 2010 - 2:54 PM
Tout d'abord merci de votre réponse, mais je ne comprends pas l'utilisation de fSauveTexte() dans ce cas précis. Idéalement, il me faut pouvoir ouvrir une image et la sauvegarder en WMF, même si cette image n'est pas nativement WMF. Cependant, il me serait déjà bien utile de savoir créer du WMF. Les images concernées sont des dessins très simples (un rectangle et des côtes) dont je connais la géométrie (les coordonnées). Je suppose qu'en cherchant un peu on doit pouvoir partir d'un fichier creux et y insérer les quelques lignes qui décrivent le dessin à partir de ces valeurs. Je suis preneur si vous savez comment "coder" dans un WMF ou des liens. Merci d'avance. >Jonathan
Posted on January, 26 2010 - 4:19 PM
Bonjour Jonathan le document de description du format wmf par microsoft est diponible ici:http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/WindowsMetafileFormat (wmf)Specification.pdf Il ne fait que 210 pages, donc tu devrait pouvoir faire ca très facilement Mais si ca ne suffisait pas, un recherche google avec "wmf format description" devrait te fournir plus d'infos Cordialement -- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International Plus d'information surhttp://fabriceharari.com/index_FR.html On 1/26/2010 8:54 AM, Jonathan wrote:Tout d'abord merci de votre réponse, mais je ne comprends pas l'utilisation de fSauveTexte() dans ce cas précis. Idéalement, il me faut pouvoir ouvrir une image et la sauvegarder en WMF, même si cette image n'est pas nativement WMF. Cependant, il me serait déjà bien utile de savoir créer du WMF. Les images concernées sont des dessins très simples (un rectangle et des côtes) dont je connais la géométrie (les coordonnées). Je suppose qu'en cherchant un peu on doit pouvoir partir d'un fichier creux et y insérer les quelques lignes qui décrivent le dessin à partir de ces valeurs. Je suis preneur si vous savez comment "coder" dans un WMF ou des liens. Merci d'avance. Jonathan >
Posted on January, 26 2010 - 5:32 PM
Extrait du PDF : "The WMF header record, specified in section 2.3.2.1 , contains information that defines the characteristics of the metafile, including:The type of metafile The version of metafile The size of the metafile The number of objects defined in the metafile The size of the largest single record in the metafile
WMF records have a generic format, which is specified in section 2.3 . Every WMF record contains the following information:The record size The record function Parameters, if any, for the record function
All WMF metafiles are terminated by a WMF end-of-file record." L'idée ça serait de modifier la zone "WMF Records" en y ajoutant juste une instruction rectangle par exemple... On voit par la suite que cette structure rectangle est : "> RecordSize (4 bytes): A 32-bit unsigned integer that defines the number of WORDs in the WMF record. > RecordFunction (2 bytes): A 16-bit unsigned integer that defines this WMF record type. The lower byte MUST match the lower byte of the RecordType Enumeration table value META_RECTANGLE. BottomRect (2 bytes): A 16-bit signed integer that defines the y-coordinate, in logical units, of the lower-right corner of the rectangle. RightRect (2 bytes): A 16-bit signed integer that defines the x-coordinate, in logical units, of the lower-right corner of the rectangle. TopRect (2 bytes): A 16-bit signed integer that defines the y-coordinate, in logical units, of the upper-left corner of the rectangle. LeftRect (2 bytes): A 16-bit signed integer that defines the x-coordinate, in logical units, of the upper-left corner of the rectangle." Je pense qu'il est possible de le faire. J'essayerais on verra bien. >Merci
Posted on January, 26 2010 - 7:21 PM
Bon alors j'ai chopé un éditeur hexadécimal, j'ai créé un WMF à partir de Metafile Companion et j'ai regardé le fichier en hexa. Je trouve bien une section de type [RecordSize:4][RecordFunction:2][Var:2]x4 avec pour ce cas : RecordSize (je ne sais pas) RecordFunction : 1B 04 qui correspond à META_RECTANGLE = 0x041B (big-endian donc inversé) et les Variables qui correspondent aux coins du rectangle je crois. J'ai permuté les valeurs des variables à la main, et j'ai réussi à faire pivoter de 90° mon rectangle. C'est exploitable ! ^^ Le problème c'est que dans les spéc c'est dit : Un header de 18 octets Des records Un EOF de 6 Octets Or, pour un simple rectangle, je compte 208 octets (au lieu de 18 + 14 + 6 = 38) Pour un fichier "vide" je compte 74 octets (au lieu de 18 + 6 = 24). Donc de toute évidence, il y a des autres informations stockées que pour l'instant je ne "decrypte" pas ! Pour la plupart ça doit être des informations sur la couleur etc... Est-ce que la description WMF est elle même encapsulée dans une description dépendante de l'OS du genre (Nom de fichier, taille, etc) ? En tout cas, ça serait plutôt sympa de réussir à faire une classe pour éditer les WMF sans avoir besoin de passer par des DLL payantes ! >A Suivre donc...
Posted on January, 27 2010 - 12:35 PM
Bonjour Suite au problème de ImageInfoValeur() qui ne me renvoyait qu'une fois sur 6 les valeurs H et L d'une image, j'ai cherché et j'ai trouvé ce petit bijoux chezhttp://www.xnview.com/fr/features_gfl.html . C'est tout simplement génial ! Je suis encore en phase de test mais je redimenssionne et je rot une image comme je veux Dans liste des formats supportés ton WMF... Pourvu que PCsoft nous integre ce type de dll... "Jonathan" <Jonathan@Jonathan.fr> a écrit dans le message de news: 7fcfd7299a06dac47e3b99e738b4c827@news.pcsoft... Bonjour, dans mon projet je travaille avec des WMF. L'affichage de ceux-ci est simple. Un champ image suffit. Mon problème est que je ne sais pas comment sauvegarder le contenu d'un champ image, au format WMF. Pourtant, il est possible de sauvegarder un graphe dans ce format. Est-ce que quelqu'un arrive à sauvegarder des images en WMF sans avoir recours à des DLL ou des ActiveX ? Y a-t-il moyen de se servir de grSauveWMF() pour le faire ? Sinon, quel composant externe gratuit peut le faire ? >