[Delphi] antialiasing (ou lissage)

antialiasing (ou lissage) [Delphi] - Delphi/Pascal - Programmation

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) ?  
 
 

Reply

Marsh Posté le 26-05-2004 à 09:33:58   

Reply

Marsh Posté le 26-05-2004 à 09:35:21    

drac a écrit :

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) ?


[:mlc]
nan mais en vrai c'est quoi ta question?

Reply

Marsh Posté le 26-05-2004 à 09:39:07    

skeye a écrit :

[:mlc]
nan mais en vrai c'est quoi ta question?


Bah je me suis expliqué non ?
Je voudrais faire un bitmap de taille 2400*2400.

Reply

Marsh Posté le 26-05-2004 à 09:40:46    

drac a écrit :

Bah je me suis expliqué non ?
Je voudrais faire un bitmap de taille 2400*2400.


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?


Message édité par skeye le 26-05-2004 à 09:40:59
Reply

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.

Reply

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 .
Pour info je fais des fractales.


Et tu la crées comment ton image pour l'instant?

Reply

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

Reply

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:
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


Tu fais une copie de ce que tu as à l'écran?[:mlc]
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é.

Reply

Marsh Posté le 26-05-2004 à 10:00:54    

CQFD :D

Reply

Marsh Posté le 26-05-2004 à 10:09:51    

skeye a écrit :

Tu fais une copie de ce que tu as à l'écran?[:mlc]
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é.

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)
 

Reply

Marsh Posté le 26-05-2004 à 10:09:51   

Reply

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

Reply

Marsh Posté le 26-05-2004 à 10:12:47    

moktar1er a écrit :

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


[:benou_+1]
J'y connais rien en delphi...[:joce]
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...

Reply

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 :D
 
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 :o


Message édité par antp le 26-05-2004 à 10:43:45

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-05-2004 à 12:00:50    

antp a écrit :

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 :D
 
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 :o


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  ?

Reply

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).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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.
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).

Bon merci , je vais voir si je peux realiser tout ça.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed