antialiasing (ou lissage) [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 26-05-2004 à 09:35:21
drac a écrit : Voila, je voudrais creer une image (en 600*600) avec anti-aliasing. |
nan mais en vrai c'est quoi ta question?
Marsh Posté le 26-05-2004 à 09:39:07
skeye a écrit : |
Bah je me suis expliqué non ?
Je voudrais faire un bitmap de taille 2400*2400.
Marsh Posté le 26-05-2004 à 09:40:46
drac a écrit : Bah je me suis expliqué non ? |
et comment tu détermines que l'image que tu as créée ne fait pas les 2400*2400 puisque ton logiciel te dit que c'est le cas?
Marsh Posté le 26-05-2004 à 09:43:02
skeye a écrit : et comment tu détermines que l'image que tu as créée ne fait pas les 2400*2400 puisque ton logiciel te dit que c'est le cas? |
paintbrush me dit que c'est le cas (attributs de l'image) mais il n'y a que 1600*1200 de visible ,le reste est en blanc .
Pour info je fais des fractales.
Marsh Posté le 26-05-2004 à 09:44:30
drac a écrit : paintbrush me dit que c'est le cas (attributs de l'image) mais il n'y a que 1600*1200 de visible ,le reste est en blanc . |
Et tu la crées comment ton image pour l'instant?
Marsh Posté le 26-05-2004 à 09:54:03
skeye a écrit : Et tu la crées comment ton image pour l'instant? |
Je fais un transfert du canvas de ma form1 vers ma timage par l'intermediaire de cadres:
form1.image1.canvas.copyrect(cadre2,form1.canvas,cadre1);
form1.image1.picture.savetofile(mafractale);image1 a bien sur la taille appropriée (2400*2400)ainsi que les cadres
Marsh Posté le 26-05-2004 à 09:56:14
drac a écrit : Je fais un transfert du canvas de ma form1 vers ma timage par l'intermediaire de cadres: |
Tu fais une copie de ce que tu as à l'écran?
Tu devrais plutôt faire tes calculs en ram et afficher ensuite, et faire la sauvegarde de ce que tu as en mémoire, pas à l'écran.
Ce qui dépasse de ton écran n'est probablement pas dessiné.
Marsh Posté le 26-05-2004 à 10:09:51
skeye a écrit : Tu fais une copie de ce que tu as à l'écran? |
Oui ça doit etre ça .
Pourtant on voit qu'il calcule toute l'image.
Mais si je fais mes calculs en ram (dans un tableau ?)comment je fais pour sauvegarder ds un fichier ?
Autrement dit j'ai un tableau et je dois pouvoir enregistrer directement dans un fichier bmp sans passer par l'affichage ?
je vois pas comment (mais je debute en delphi)
Marsh Posté le 26-05-2004 à 10:11:12
t'alloue un bitmap et tu écris directement dedans
pour le détail du code, je laisse les spécialiste du Delphi te filer un coup de main
Marsh Posté le 26-05-2004 à 10:12:47
moktar1er a écrit : t'alloue un bitmap et tu écris directement dedans |
J'y connais rien en delphi...
En gros oui tu fais tes calculs dans un tableau, et tu dois bien avoir une fonction quelquepart pour enregistrer un bitmap à-partir d'un tableau...
Marsh Posté le 26-05-2004 à 10:41:21
Tu dessines sur quoi ? TBitmap ou TImage ?
Si c'est un TImage, il faut qu'il soit en 2400x2400 et pas ajusté à la taille de la fenêtre (tu peux le mettre dans un TScrollbox par ex pour avoir des barres de défilement)
Il est pas impossible que Paint ait des problèmes avec des grandes images
Si le dessin est trop lent, tu mets DoubleBuffer à True, ça te fera l'équivalent du bidule en mémoire copié à l'écran et tout
Marsh Posté le 26-05-2004 à 12:00:50
antp a écrit : Tu dessines sur quoi ? TBitmap ou TImage ? |
merci pour les infos.
Je dessinais sur la form puis je transferais dans un timage pour pouvoir appliquer la methode savetofile (je sais pas faire autrement pour enregistrer un fichier graphique)
On pourrait donc dessiner directement dans un timage de taille 2400*2400
et sauvegarder avec savetofile ?
Un tscrollbox peut contenir un timage ?
doublebuffers fait parti de quel composant ?
Marsh Posté le 26-05-2004 à 12:11:48
Moi je dessinerais directement sur le canvas du TImage, c'est plus simple vu que t'as le SaveToFile directement.
Tu mets ton TScrollbox sur la Form, dans le TScrollbox tu mets le TImage dont tu spécifies les dimensions.
Si le TImage est plus grand que le TScrollbox, des barres de défilement apparaîtront.
Le DoubleBuffered est une propriété booléenne de tous les TWinControl. Vu que le TImage n'est pas un WinControl mais un Graphic, tu dois activer le DoubleBuffered de son parent (le TScrollbox par exemple, ou la Form).
Marsh Posté le 26-05-2004 à 12:30:38
antp a écrit : Moi je dessinerais directement sur le canvas du TImage, c'est plus simple vu que t'as le SaveToFile directement. |
Bon merci , je vais voir si je peux realiser tout ça.
Marsh Posté le 26-05-2004 à 09:33:58
Voila, je voudrais creer une image (en 600*600) avec anti-aliasing.
pour ce faire il me faut:
1: creer une image en 2400*2400 (rapport de 4)
2:appliquer un algo de reduction (ou utiliser un logiciel specialisé)
je bloque a l'etape 1 :
J'essaye de creer une image en 2400*2400 , l'image semble se calculer correctement (je ne peut bien sur voir que la partie 1600*1200, resolution de mon ecran), je l'enregistre en bmp.
Je l'ouvre avec paintbrush, il me dit que l'image est bien en 2400*2400 mais je ne vois que 1600*1200 .
Comment faire pour avoir un vrai bmp effectif en 2400*2400 (ie superieur a la resolution de l'ecran) ?