Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TEXTURE PACKER - OU COMMENT GÉRER UNE BANQUE DE TEXTURES FACILEMENT !


Information sur la source

Catégorie :Fichier / Disque Classé sous : TObjectList, liste, bitmap, stream, texture Niveau : Initié Date de création : 14/12/2008 Date de mise à jour : 23/12/2008 18:37:13 Vu / téléchargé: 1 443 / 177

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (65)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Bonjour,
voici un editeur de banques de textures : vous pouvez mettre n'importe quel bitmap de moins ou égal à 128px/128px (modifiable), accompagné de son nom et de son auteur, dans un seul fichier !
Le tout est géré par 2 unités : une unité maître et une unité "classe". L'unité maître gère la majorité des exceptions et offre aussi un support de console, avec des informations de débogage partout (le texte entre WriteInConsole peut être considéré comme du commentaire).
Une application d'exemple est fournie avec ces unités, pour montrer comment les utiliser. J'ai également mis un paquet de textures de démonstration, qui contient des bitmaps que vous pourrez voir (et extraire ! attention !) si vous téléchargez le zip :p
Voir le Read-Me pour plus d'explications.

Le développement de cette source, autant les unités que l'application de démonstration, m'a beaucoup apporté, et j'espère qu'elle apportera aussi à certains d'entre vous. Je la mets en initié car c'est pas si facile à comprendre malgré tout (surtout l'histoire de la console, déjà expérimenté au Solitaire).

Voici ce que cette source pourrait eventuellement vous apporter :
=> Gestion basique d'un TObjectList
=> Comment créer ses classes
=> Gestion d'un stream
=> Lecture-Ecriture d'un fichier personnalisé
=> Gestion basique des erreurs
=> Créer une console personnalisée sans avoir à faire {$APPTYPE CONSOLE}
=> Utiliser l'interface IShellLink pour créer des raccourcis Windows
=> Utiliser un Notebook pour faire comme un vrai installateur
=> Extraire des ressources avec l'unité Resource_Unit
=> Gestion d'un "Byte Array" (un tableau dynamique qui fait office de bitmap fichier dans mon unité)
=> Comment se débrouiller pour enregistrer plusieurs bitmaps accompagnés d'autre data dans un seul fichier ...

+ En bonus, comment rendre une application plus belle graçe aux grandes icônes ...

Je suis particulièrement fier de cette source, j'ai pas mal réflechi sur l'histoire de l'enregistrement des bitmaps, j'ai finalement atterri sur les byte array ...

PS : Les array of TBitmap ne peuvent pas marcher car la taille de l'array est indéfinie (inutilisable en structure).
D'ailleurs, un record of bitmap ne marche pas non plus car TBitmap est indéfini en matière de taille ...
N'est-ce pas Cantador ;)
Réplique de Cantador : "et les Packed Record ?" :p
J'y pense toujours ...
 

Conclusion

Voilà, tous commentaires, remarques, critiques, conseils, remarques ...

Cordialement, Bacterius !

PS : j'ai enlevé son header pour plus de convénience, mais je tiens à remercier et à citer DelphiCool pour son unité Resource_Unit, dont il est l'auteur.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

18 décembre 2008 21:41:31 :
// Ajout d'un bitmap dans le ExamplePack // Gestion des erreurs dans LoadPackage et SavePackage ! // Ajout d'un raccourci pour lancer la démo en mode debug, pour voir la console ;)
18 décembre 2008 21:49:54 :
// Nouveau paquet de textures (l'autre était corrompu)
18 décembre 2008 21:52:38 :
// Nouveau paquet de textures (l'autre était corrompu)
19 décembre 2008 16:50:05 :
// Réparation du bug + nouveau paquet ;)
20 décembre 2008 21:25:50 :
// Relookage total de l'application démo, nouvelles icônes, nouveau système d'affichage des textures + quelques travaux dans l'unité TexturePkg.pas
21 décembre 2008 14:45:44 :
// Nouvelle version : ajout de IMod, pour modifier rapidement sa texture dans le logiciel + réorganisation de l'interface + vérification du nom de la texture (pas de doublons de nom !) + ajout des deux boutons a propos et options du paquet, plutôt qu'un seul bouton multifonctions + petite amélioration (ajout du nom de la texture en cours dans le caption de la fiche).
21 décembre 2008 15:59:23 :
// Nouvelle tentative de capture d'écran :o)
21 décembre 2008 19:59:11 :
// Très grosse mise à jour : ajout d'une propriété Groupe + toutes les modifications que cela entraîne ...
21 décembre 2008 20:26:16 :
// Ajout de l'installateur
21 décembre 2008 21:51:20 :
// Ajout de l'installateur
21 décembre 2008 22:52:09 :
// Petit bug de libération d'objet
22 décembre 2008 14:50:13 :
// Petit bug de libération de mémoire
22 décembre 2008 15:54:55 :
// Petit arrangement du code pour les images de taille inférieure à 128x128
23 décembre 2008 12:31:03 :
// Mise en application des commentaires de Nicolas ;)
23 décembre 2008 15:49:35 :
// Ajout de la multisélection uniquement pour la suppression de textures
23 décembre 2008 18:20:38 :
// Exportation en masse disponible + ajout d'une option Site Internet ^^
23 décembre 2008 18:37:13 :
// Petite amélioration ;)

Commentaires et avis

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 17:48:07

Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 18:10:00

Salut à tous....

Je vois que c'est une biblio de texture... cool !

J'ai une question, mais je voudrais pas vous embêter :

c'est quoi cette histoire d'interpolation pour afficher rapidement une texture en 3D ?

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 18:17:35

Je ne comprends pas ... ou ai-je parlé de texture en 3D ... d'interpolation ?
Peux-tu me donner plus de précisions BluePerfect ? (il est possible que j'ai oublié un détail).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 18:19:48

Ah oui en effet c'est une bibliothèque de textures, que l'on peut utiliser pour gérer des textures de tailles différentes dans un jeu (bien sûr il n'égalera jamais le grand TImageList). Son avantage est sa rapidité, son inconvénient est son occupation de place (444 Ko pour 9 textures :o).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 18:31:48

non non, tu ne te trompes pas, tu ne parles ni de 3D ni d'inverse de projection, mais mon patron, à qui je fais la démo de ma bibliothèque 3D, il a tiqué quand il a vu le temps d'affichage et de rotation de mes bitmaps...(je rotatione TOUT le bitmap !!!)...et il m'a dit de me renseigner pour l'accelerer...En fouinant sur google, j'ai trouvé des morceaux de code sur l'utilisation de "l'interpolation" pour l'affichage de textures, alors je me suis dit que tu saurais m'aiguiller !

DH

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 18:44:07

Alors là ... déjà que je n'ai aucune idée de ce qu'est l'interpolation ...
Je suis plutôt branché 2D pour le moment ... (j'ai fait des tests en 3D mais c'est vraiment le bordel ... a tel point que j'ai du mal à reconnaître un sinus d'un cosinus ... j'avais envie de me tuer devant mon unité quand Math.Pi renvoyait 10 ...) ...
Bref, je ne connais que très peu de choses à la 3D pure, et rien du tout sur l'interpolation et l'application de textures 3D :-C désolé ...

Cordialement, Bacterius !

PS : teste au moins ma banque de textures si tu as le temps pour voir ce que tu en penses :)

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 18:53:24

Je viens de lancer l'exe !

Chouette !

Tu stockes dans un package et tu peux donc exporter...comme un mini SGBD...

* Commentaires sur chaque texture ?
* Gestion multipackages ?
* Gestion des doublons ?
* et les TStream ? -->   TTexturePkg=class(TStream) ?

(si t'entends parler de cette interpolation...fais moi signe....)

Au fait, j'ai un package en teste, je peux le poster ? Il est assez balaise, mais au final il vaut le coup : Une TPaintBox en 3D, avec gestion de ticks en ms sous forme de Thread !

DH


signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:03:35

Commentaire sur chaque package : alors là, aucun problème : j'ai renoncé à le mettre pour un souci de légèreté de la démo, mais il suffit d'ajouter dans Texture.pas un champ Commentaire, et arranger tout dans les LoadPackage, SavePackage, ReadTexture, SaveTexture, etc ...
Gestion multipackages ... c'est-à-dire ? Un paquet de plusieurs paquets ? Ca doit se faire ^^
Gestion des doublons - il suffit de faire un IndexOf(Texture: TTexture) à chaque fois qu'on ajoute une texture : si il trouve une texture identique, il annule l'opération.
Faire une classe héritée de TStream me semble une très mauvaise idée ... utiliser les stream OK, mais s'en servir comme ancêtre ... faut voir ^^

Sinon, je ne sais pas si tu peux le poster, mais pourquoi pas ? Si il marche ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 19:07:06

* multipaquets : pas plusieurs paquets dans un paquets, mais une bibliotheques de paquets !
* doublons : images identiques !!!
* TStream : sont puissants, et te rapprocheraient du C++...

mon package : ya des retouches à fairre, mais je vais voir....

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 19:08:36

http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_21239155.html

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:13:08

Multipaquets : une bibliothèque de paquets = plusieurs paquets dans un paquet, non ? Ou alors un dossier qui contient des paquets ? mais ça revient globalement au même lol.
Je vais me pencher sur les doublons et sur les multipaquets.
(les multipaquets me branchent plus)

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:15:01

Le lien que tu passes nous renvoie sur un topic de forum, avec une question.
Je t'envoie la réponse que je te propose par MP.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 19:15:43

Tu as un paquet : texture-herbe, et un autre texture-general...

Si tu dépose une texture dans general, et que le commentaire est herbe, alors tu le copie dans le paquet herbe, si ce TBitmap n'existe pas déjà !

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 19:16:16

le lien est un algo de comparaison de TBitmap

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:18:30

Ah d'accord ... bon ben je t'ai envoyé quelque chose dont tu n'as pas besoin ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:20:07

"Tu as un paquet : texture-herbe, et un autre texture-general...

Si tu dépose une texture dans general, et que le commentaire est herbe, alors tu le copie dans le paquet herbe, si ce TBitmap n'existe pas déjà !"

Je ne comprends pas très bien ... quel est l'intêret de cela à part trier et purger des paquets selon leur nom ?

Cordialement, Bacterius !

PS : j'ai eu cette idée (de faire un package de textures) pendant que je faisais des maps avec UnrealEd 2 et c'était drôlement sympa je trouve.

signaler à un administrateur
Commentaire de blueperfect le 14/12/2008 19:56:26

>>Je ne comprends pas très bien ... quel est l'intêret de cela à >>part trier et purger des paquets selon leur nom ?
Ce serait chouette d'avoir que à dire je veux une texture d'herbe et il te sors toutes les textures herbes !

>> j'ai eu cette idée (de faire un package de textures) pendant >> que je faisais des maps avec UnrealEd 2
Un must !


signaler à un administrateur
Commentaire de Bacterius le 14/12/2008 19:59:46

Ah tu veux dire un filtre de saisie ?
Je mettrai peut-être ça dans l'application de démonstration, par exemple tu tapes "herbe" et toutes les textures qui ont "herbe" dans leur nom sont affichées ... ok ...
Je ferai ça la semaine prochaine, quand j'aurai à nouveau Delphi ;)

Cordialement, Bacterius !

PS : ah oui UnrealEd 2 est le meilleur éditeur 3D que j'aie jamais vu ...

signaler à un administrateur
Commentaire de offlake le 16/12/2008 11:25:51

Bonjour Bacterius
C'est une bonne application rien à dire
Tu peux me donner où ta eu les icônes, parce que je vais publier un code prochainement et je vais baser sur ton code pour l'IHM "Interface" Ok!!
Jte donne 7/10 je pense que c'est une bonne note non!!
BY OFFLAKE

signaler à un administrateur
Commentaire de offlake le 16/12/2008 11:26:24 6/10

Exellent!!
BY OFFLAKE

signaler à un administrateur
Commentaire de Bacterius le 16/12/2008 16:03:35

Ouais en effet ça fait 14/20. Après tout est relatif.
De toute façon je ne tiens jamais compte des notes, elles ne sont là que comme header pour ceux qui veulent - je ne tiens compte que des commentaires.
Ok, mais je te préviens : ne prends pas ces icônes.
Ah oui, j'ai oublié de le préciser :

=====================================================================
== ATTENTION : LES ICONES UTILISEES NE PEUVENT PAS ETRE UTILISEES  ==
== A DES FINS COMMERCIALES (je les aies prises en free sur un site ==
==                que je vais vous communiquer)                    ==
=====================================================================

Je les aies prises sur un site interessant - il propose tout en bas de la page des icônes aléatoires 64x64 à télécharger (à chaque fois que tu actualises ça remplace les icônes par une fournée d'autres). De plus, pas besoin de les retoucher, elles sont sur fond clBtnFace (la couleur des ToolBar quoi).
Bref, voilà :

http://www.iconspedia.com/ (voir en bas, le paragraphe "Random icons")

Merci Offlake ;)
Par contre j'ai dû actualiser une bonne centaine de fois pour trouver toutes les icônes qu'il me fallait ... Donc bonne chance - et n'oublie pas : ne fais pas n'importe-quoi avec ces icônes ;)

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 16/12/2008 16:04:39

Ah en passant tu m'as mis 6 pas 7 ;)
Pas grave.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de offlake le 16/12/2008 20:24:01

Excuse Moi pour la note jaurai du mettre 7/10 mais bon
Merci pour les informations sur les icones!!
BY OFFLAKE

signaler à un administrateur
Commentaire de cantador le 17/12/2008 10:49:31

Salut Bacterius,

Désolé pour ce retard à l'allumage mais je suis très occupé
en ce moment et je n'ai pas regardé ton code...
mais ca sent très bon..
pour la chiquenaude
"D'ailleurs, un record of bitmap ne marche pas non plus car TBitmap est indéfini en matière de taille ...
N'est-ce pas Cantador ;)"
je te fais une pichnette :
et les PackedRecord ??
@+

signaler à un administrateur
Commentaire de Nicolas___ le 17/12/2008 22:50:54

<<
Par contre j'ai dû actualiser une bonne centaine de fois pour trouver toutes les icônes qu'il me fallait ... Donc bonne chance - et n'oublie pas : ne fais pas n'importe-quoi avec ces icônes ;)
>>

euh , pourquoi tu ne regarde pas directement dans la section qui t'intéresse ???!

signaler à un administrateur
Commentaire de Bacterius le 18/12/2008 19:17:54

@Nicolas : Parce que ça me dirigait vers abonnement.php ... mais j'ai dû cliquer sur une publicité. Je vais regarder ça de plus près merci pour ce conseil Nicolas ... *s'enerve sur la souris* ça va probablement m'être utile ...

@Cantador : j'ai regardé le site que tu m'as envoyé, mais j'ai delphi que les weekends (et je l'ai lu pendant le dernier weekend) : donc je vais essayer de l'appliquer demain soir ;) c'est les vacances.
Mais tes packed record sentent bon aussi :p si ça pouvait se limiter à un array of Bitmap alors - de temps de chargement et de sauvegarde, plus de sales fonctions conversion byte array to bitmap, etc ...
:p

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 18/12/2008 20:16:43

J'ai regardé les packed record, et je ne comprends pas très bien :

"la directive Packed ne fait que désaligner les champs".
C'est très bien tout ça, Mais à quoi bon compresser la taille en mémoire d'un bitmap alors qu'on ne connaît même pas sa taille au départ ?
Qu'est-ce qu'on fait si on a un bitmap 64x64 et un bitmap 1024x1024 ?
Ils pèseront pareil d'après ce que j'ai lu :/

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 18/12/2008 21:44:02

Voilà, bon une petite update (j'ai volé mon ordinateur pour quelques minutes) :
- ajout de la gestion des erreurs dans LoadPackage et SavePackage
- ajout d'un raccourci pour passer en mode debug direct et voir la console
- ajout d'un bitmap dans le ExamplePack

Rien d'important, c'est juste un avant-bouche avant le travail de Noël !

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 18/12/2008 21:54:16

Bon ça beug (corruption de fichier à la sauvegarde), je corrige le bug demain soir j'ai plus le temps ce soir.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 19/12/2008 16:52:11

Et voilà, le bug a été corrigé.
Ce n'était pas un problème au niveau de l'unité TexturePkg, mais au niveau de l'application démo.
En réalité, après quelques tests infructueux, j'ai voulu remettre mon application comme elle était avant.
Mais j'ai fait une étourderie : j'ai fait ouvrir le paquet localisé par CurrentFile avant de donner la valeur choisie par l'utilisateur à CurrentFile. Bref, on essayait d'ouvrir un fichier vide ;)
Maintenant tout va bien :p

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 20/12/2008 21:30:39

Bon, j'ai fait un relookage total de l'application de démonstration, j'ai remis en question tout l'affichage des textures (maintenant c'est 1 par 1, sous forme de Listbox et quand on clique sur une texture elle s'affiche avec ses infos dans le côté droit). J'ai également changé toutes les icônes (merci Nicolas, je n'avais pas vu les catégories, non franchement c'était une bonne idée que tu as eu, grâce à toi j'ai accès gratuitement à tous les packs - et c'est mieux d'avoir des icônes qui proviennent toutes du même pack !), j'ai mis une boîte de dialogue A propos (pour le dégradé triangulaire de couleurs, je me suis servi de l'algorithme de dégradé triangulaire de Cirec (http://www.delphifr.com/codes/REALISER-DEGRADE-SUR-PLUSIEURS-COULEURS-AVEC-API-WINDOWS_35784.aspx), merci à lui !).

Enfin, j'ai arrangé un petit peu l'unité TexturePkg, et j'ai limité la taille des champs Nom et Auteur à 255 caractères (car ShortString n'accepte que cela au maximum, et c'est bien suffisant pour un nom et un auteur à mon avis).

Voilà, enfin bref - grosse mise à jour ;)

Je continue à lire et à comprendre les packed record ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 20/12/2008 21:38:32

Ah faut attendre un peu pour la capture d'écran, il y a toujours l'ancienne.
C'est probablement parce que mes captures sont toujours très lourdes (je mets 100% qualité JPG pour donner le meilleur aperçu possible ... mais je pense passer à 90% d'ici maintenant).

N'hésitez pas à me dire si vous préfériez l'ancienne version ;)
(le principal inconvénient avec la grosse TListView était qu'elle mettait un filtre blanc par dessus l'image sélectionnée, c'était très dérangeant ...).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 14:50:06

Voilà, une nouvelle version : j'ai inclus IMod dedans, enfin voilà :
// Nouvelle version : ajout de IMod, pour modifier rapidement sa texture dans le logiciel + réorganisation de l'interface + vérification du nom de la texture (pas de doublons de nom !) + ajout des deux boutons a propos et options du paquet, plutôt qu'un seul bouton multifonctions + petite amélioration (ajout du nom de la texture en cours dans le caption de la fiche).
J'espère que vous apprécierez ;)

Cordialement, Bacterius !

PS : La capture d'écran a encore du mal à passer ... je me retrouve avec la toute première lol.

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 16:00:44

J'ai réessayé de mettre la capture d'écran ... on verra bien !

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 20:04:28

Attention : grosse mise à jour : introduction d'une propriété Groupe, qui permet de trier les différentes textures selon des groupes : j'ai également refait un paquet de textures de démonstration (je remercie Cirec pour son algorithme de dégradés triangulaire et horizontal/vertical, j'ai fait le paquet avec ça ^^). J'ai arrangé pas mal de trucs, bref tout est stable maintenant : l'application est même prête à réagir face à un paquet corrompu sans rentrer en violation d'accès à chaque fois qu'on cherche à fermer l'application.

Bref, voilà : stable.

J'ai même fait un installateur pour l'application, mais il faut que je renomme les composants ... et puis je ne sais pas si je le posterai avec cette source.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 20:05:51

Je viens de vérifier, ça passe - je le posterai donc ici.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 21:52:37

Et voilà, l'installateur est inclus.
Gros boulot aujourd'hui ... :x

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/12/2008 22:53:11

Voilà, dernier bug réparé - oubli de libération du FileStream pour vérifier la taille du fichier ... donc violation d'accès au 2eme appel.
C'est réparé !

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 22/12/2008 14:52:09

Voilà, un autre bug ... un petit peu lié au précédent : petit bug de libération de mémoire du filestream interne de TexturePkg lors de la sauvegarde (libéré qu'en cas d'erreur - bref, tentative d'ouverture de fichier déjà ouvert ... enfin bref bon).
Remarque, un truc étrange c'est qu'après la violation d'accès, la toolbar a disparu.
Quelqu'un a-t-il des explications ??

En tout cas ça marche cette fois ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 22/12/2008 15:56:47

Un autre bug - ça n'arrête pas ! - pour les images de moins de 128x128 px. En effet, elles étaient de toute façon dimensionnées à 128x128 - donc elles apparaissaient avec un méchant cadre blanc dans l'aperçu de la fiche principale. C'est réparé, maintenant elles apparaissent bien au milieu, proprement ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2008 17:19:21

aaaaaaahhhhh !

Euh non rien , c'est juste pour éviter un monologue interminable ^^

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2008 17:24:15

Allez j'ai enfin téléchargé ta source , premier truc (juste pour te contrarier ) :
Pourquoi n'as tu pas mis d'icône pour NewBtn ?
Enfin plutôt pourquoi as tu mis une icône blanche ! Pas très explicite  

je sais , je sais ... je suis un *** ^^

signaler à un administrateur
Commentaire de Bacterius le 22/12/2008 17:34:44

Beuh ? *vérifie vite son application*
Ben il y a un fichier vierge en icône en fait ^^
C'est sûr que c'est pas aussi explicite qu'un bouton avec marché "NEW" dessus, mais qu'aurais-je pu mettre ? Tu as une idée Nicolas ?

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 22/12/2008 17:35:04

marqué*

rhalala ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2008 17:48:20

Bon j'ai des idées mais ça va pas te plaire !

Tu ne t'en rends certainement plus compte parce que c'est ton soft , mais pour créer un paquet et importer 5 textures ça prends un temps de dingue !

Explication :

1°) Création du paquet :  4 champs à remplir , pas de valeur par défaut (pas encore trop grave ici)

2°) on importe une texture :
encore 3 champs à remplir, toujours pas de valeur par défaut !!!
et si on ecrit rien , BAM erreur !

Genre auteur pourrait être = à auteur du paquet
Nom texture = nom Fichier
Groupe , tu le met dans par exemple 1 ou indéfini (que sais je ! )

Et c'est pas ça encore le plus horrible !
Si tu veux te faire un paquet (imaginons avec 150 textures)
je pense que personne ne va s'amuser à réaliser 150 * cette opération !
Ca prend trop de temps (enfin c'est mon avis )

Il faudrait revoir t'as façon d'importer tes textures.
Déjà je pense qu'il faudrait pouvoir en sélectionner plusieurs à pouvoir importer(Je parle par rapport à ton TOpenDialog et MultiSelect := true (un truc comme ça ^^ ))  

Après il y a une incohérence, imaginons tu fais un faute , tu importes une texture(ça fait la 50ième... t'en as marre ) , tu remplis ts les champs et là tu fais une faute , tu te trompes de groupe !(rien de bien méchant ! )
Eh ben t'as plus qu'a la supprimer et à recommencer l'opération parce que le "modifier" ne s'applique pas vraiment à ta texture mais juste au bitmap !
Et ce qui est dommage , c'est que tu le gère par rapport au Paquet !  

ET pour finir , tu ne devrais pas utiliser un TListBox mais un Arbre et tu crée autant de n½uds que de groupes de textures existants ds ton paquet (pour voir le contenu de ton paquet évidemment )

Si t'as des questions par rapport a ts ceci , n'hésite pas ^^

Un soft , ce n'est pas seulement du code bien propre et bien gérer , c'est aussi l'ergonomie et la facilité

Ici ton application est très belle mais elle est vraiment trop " lourde "
Fais le test , tu verras !

Nico

signaler à un administrateur
Commentaire de Bacterius le 22/12/2008 18:03:43

C'est sûr, j'y pensais justement pendant (à l'instant) que je poussais au maximum le code.
Je viens de faire le test.
Je pensais à peu près aux mêmes choses que toi :

Nouveau paquet : eh ben, il veut faire un paquet, il ne le fera pas souvent, bon ça va 4 champs à remplir ... (de toute façon ne rien remplir ne déclenche pas d'erreur)

Nouvelle texture : Nom = nom simple du fichier sans l'extension / Auteur = auteur du paquet par défaut

Pour la ListBox je la trouvais très bien, et les TreeView c'est vraiment le bordel, mais je vais essayer.

Et puis, tu t'es trompé héhé : Modifier modifie aussi le nom et l'auteur - il suffit de "Cliquer pour modifier" - bon c'est pas super ergonomique mais j'avais plus de place ^^.

Et je vais evidemment penser à une option "Import en masse", ou on définit un format de nom (basé par exemple sur l'index du fichier en cours), un auteur commun, et un groupe commun, et hop on sélectionne tous les fichiers.

Bref, ton commentaire m'a, pardonne moi l'expression, troué les yeux (à défaut de les ouvrir) ^^

Merci encore je vais revoir tout ça.

Cordialement, Bacterius !

Bon sinon, si vous voulez des performances :

- Sauvegarde 256 textures : 132 ms
- Chargement 256 textures : 384 ms

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2008 18:28:56

Mon commentaire n'a rien de méchant ...

"
Bon sinon, si vous voulez des performances :

- Sauvegarde 256 textures : 132 ms
- Chargement 256 textures : 384 ms
"
euh comment t'as fait ca ???

Pour le modifier la texture autant pour moi ^^ Mais c'est pas très lisible

Au fait pour le TreeView , l'idée c'est de pouvoir changer de groupe très facilement une texture en faisaint simplement un glisser deposer dans le noeud correspondant au groupe voulu ...
  

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2008 18:39:50

J'ai relu mes commentaires et j'ai été un peu chien , c'est sur que c 'est du gros boulot , c'est bien ficelé et en plus c'est beau :)

Je me suis trompé par rapport à l'ajout de nvl textures ? je pige pas tes perf au fait ?

Pr le TreeView c'était bien sur aussi avant de découvrir qu'il y avait possibilité de modifier une texture (l'idée n'en reste pas meilleur pour autant ^^ lol )

Il faudrait que tu gère aussi des petits raccourcis (par ex double clic sur le ListBox et Hop on lance Modifier ... )

signaler à un administrateur
Commentaire de blueperfect le 22/12/2008 19:34:58

>>PS : Les array of TBitmap ne peuvent pas marcher car la taille de >>l'array est indéfinie (inutilisable en structure).
>>D'ailleurs, un record of bitmap ne marche pas non plus car TBitmap >>est indéfini en matière de taille ...
La "bonne solution", est d'enregistrer ton "TBitmap" dans un fichier séparé de celui de ton "record", et d'inscrire le nom du fichier dans un des champs du "record" !

signaler à un administrateur
Commentaire de blueperfect le 22/12/2008 19:36:22

type notebookrecord = record
            bitmapfilename:AnsiString;
            ....
end;

et sur le disque :
notebook.data
bitmap24.bmp
bitmap23.bmp

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 11:35:09

J'ai rien compris blueperfect ...

Sinon, @Nicolas :

-> Pour les performances, j'ai introduit des GetTickCount dans mon application démo pour voir les performances avec 256 bitmaps (eh oui j'ai eu la patience de tous les mettre !)

-> Pour ton commentaire : non non c'est normal, il m'a beaucoup aidé crois-moi

-> Pour le Treeview c'est pas encore fait, mais je vais réflechir un peu dessus, l'idée du glisser-déplacer me semble bien, mais je rencontre un problème toutefois : il faudrait une plus grande hauteur à la fiche, car avec des groupes de 20 textures, on ne peut pas voir tous les groupes en même temps. Au pire, pour changer de groupe, clic droit -> changer la texture de groupe -> choisir groupe et voilà ! Mais je vais également introduire un multiselect dans la listbox (ce qui serait difficile avec un treeview).

Au fait, je poste la version avec tous les trucs que tu m'as dit dans ton premier commentaire, et je commence avec les autres commentaires ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 11:38:22

Ah je viens de comprends blueperfect.
Mais l'intêret du paquet réside en ce qu'il est autonome : ta technique propose simplement de répertorier des adresses de bitmaps sur le disque ... Celle que je propose actuellement permet de les mettre dans le paquet directement.

Sinon, juste un dernier truc, pour ceux qui voudraient faire des paquets imposants :
la technique de compression RAR marche particulièrement bien avec les paquets .ptx : en effet, le paquet de 256 textures (soit 12560 Ko), passe à 990 Ko en RAR (mais en ZIP il passe juste à 4700 Ko, ce qui n'est déjà pas mal ^^).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 12:31:52

Et voilà, j'ai tout mis sauf la treeview, pas encore pour l'instant.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Nicolas___ le 23/12/2008 15:05:58

Cool , on peut déjà aller plus vite grâce à l'import en masse ...
bon je suis encore chiant mais y'a pas grand chose à changer :
dans l'OpenDialog de l'import en masse, tu devrais aussi mettre un filtre
"tous les formats" et pas seulement prendre les *.bmp ou *.jpeg ...  

Vivement la multiSelection % à la Listbox
(effacer plus rapidement et d'autres choses ...)

Nico

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 15:15:05

Ouais, la multisélection pose pas mal de problèmes en fait, mais on va bien s'en sortir - impossible n'est pas Delphi - et puis pour "tous les formats", je l'ai oublié, en effet c'est assez chiant de devoir changer pour voir bmp ET jpeg, et puis sinon : il faudrait que j'aille chercher la GraphicEx pour prendre en compte tous les formats (ça serait en effet pratique de pouvoir, au moins ouvrir les images bitmap, jpeg, png et tif ...)

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de blueperfect le 23/12/2008 15:32:08

pour la gestion de ta base :

tu peux gérer des parties binaires dans tes records, où tu stockerais les textures, en indiquant la taille du bloc dans le record...

Si cela t'interresse, discutons-en !

DH

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 15:51:42

Et voilà Nicolas !! Ajout de la multisélection, mais elle n'est pour l'instant adaptée qu'à la suppression de textures (j'ai aussi rectifié le OpenDialog). Attention : on est pas à l'abri d'un bug, j'ai fait un peu au pif, je ne suis pas sûr de la stabilité de l'ensemble à présent ...). Pour l'exportation de textures en masse, je pensais à : si une seule texture, boîte de dialogue normale, sinon : sélection d'un dossier, et on les enregistre selon un format [%d] - %s.
C'est correct ?

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 18:21:48

Et voilà, exportation en masse, comme dit dans mon précédent commentaire !!!
Et un petit ajout : option Site Internet ...

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 23/12/2008 18:37:50

Petite amélioration toute bête + une capture d'écran encore plus sympa ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Debiars le 24/12/2008 09:19:12

Un truc simple pour enregistrer un bitmap.
Tu le copie dans un TImage et de la Image.Picture.SaveToStream().
Je vais poster sous peu un exemple dans ce sens...

Cordialement, debiars !

signaler à un administrateur
Commentaire de Nicolas___ le 24/12/2008 10:19:12

C'est cette solution que je lui est proposée ... mais juste en passant par un TBitmap , pas besoin d'un TImage :)

signaler à un administrateur
Commentaire de Bacterius le 24/12/2008 11:27:11

Oui, j'avais pensé à regrouper tous les bitmaps dans des streams différents puis tout recoller, mais plein de violations d'accès ...

Je vais réessayer !

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Debiars le 24/12/2008 14:42:41

@Nicolas : je passe par un Timage pour garder la taille de l'image.
Par exemple pour une même image cela donne :

bitmap 826934 octets
jpeg    78489    "

donc gain de mémoire important...

signaler à un administrateur
Commentaire de Nicolas___ le 24/12/2008 14:50:45

@Debiars : On peut donc faire la meme chose avec un TJpegImage , faire un SaveToStream à partir de celui ci , l'enregistrer et le recuperer, d'ailleurs pour le recuperer dans le fichier comment fais -tu ?

Moi je remplis un TMemoryStream avec les données de enregistrées precedement grace au SaveToStream et une fois tt récupéré je fais MonImageBMP.LoadFromStream(LeStreamRempli).
[Parce que je ne travaillais qu'avec des BMP, je pensais à tort que ca ne marcherais pas pour les Jpeg]

Bon ce n'est pas très clair et en plus cette opération pose des problèmes

signaler à un administrateur
Commentaire de Debiars le 24/12/2008 15:42:00

@Nicolas et autres : pour simplifier, je poste dans la foulée le prog qui explique tout.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Enregistrer un TObjectList sur un fichier ? [ par Bacterius ] Bonjour, alors voilà mon problème : pour Noël, je voudrais offrir à mon père un logiciel. Alors ce logiciel est supposé gérer une liste de guitares, a Ajout / Suppression sélection [ par Momo8910 ] Bonjour à tous,Voilà je suis en train de monter un chat, et j'ai crée un bouton où je peux lancer une nouvelle discution...Jusqu'à là, tout va bien :D Enregistrement d'un bitmap parmi d'autres variables dans un fichier [ par Bacterius ] Bonjour,voici mon problème - il est lié au problème du TObjectList - en fait, je voudrais pouvoir, dans un record, enregistrer dans un fichier un bitm sélection dans la liste d'un cxdblookupcombo [ par jeje2 ] Bonjour,Dans un projet, j'utilise un cxdblookupcombobox de chez devexpress.La liste affiche bien les données de mon datasource mais quand je sélection texture en fond de form depuis un fichier res [ par gebu34 ] Bonjour à tous,Je voudrais mettre des textures sur mes Forms, pour améliorer la présentation.J'ai une méthode qui fonctionne bien pour la fenêtre prin CopyRect [ par Nicolas___ ] Bonjour à tout le monde , ben voila , j'ai une colle : J'utilise CopyRect pour coller une partie d'une image(Bitmap) dans un canvas(Form ou n'importe accétion à la liste de table ( BD ) [ par lessin0 ] salut a tous j'utilise delphi6 , et paradoxe7 pour le SGBD .j'ai concu une table et sa fiche . le problème pour moi est que , ma fiche n'arrive pas a AlphaBlend , TransparentColor & Co [ par Nicolas___ ] Bonjour , encore moi ;) Voila, j'ai encore un problème : Cirec m'a fait Découvert il y a quelque temps TransparentBlt (http://www.delphifr.com/forum/s FileListBox [ par AEC1 ] Bonjour à tous,J'ai une FileListBox qui m'affiche le contenu d'un répertoire au démarrage de mon aplli.Comment quand d'autre fichiers s'ajoutent à ce Insérer des bytes dans un stream [ par Francky23012301 ] Salut à tous,Depuis quelque temps je cherche à insérer des donner des données dans un TFilStream. Il est possible de le faire en utilisant un Stream t


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.