canvas resize

canvas resize - Delphi/Pascal - Programmation

Marsh Posté le 23-08-2002 à 14:48:19    

Salut, j'ai un petit probleme avec le canvas de TImage, pas de prob pour dessiner dedans, j'use d'une proc "dessin" qui dessine en fonction de la taille du canvas, MonImage.Canvas.width et Height. Si l'option strech est à true quand je change la taille de l'image, le dessin est redimentionné, normal, mais se dernier est moins net, puisque le stretch fais une interpolation sur le dessin.
alors je veux forcer le trace du dessin. Qd je fais ca, l'image est redessinner bcp plus grde que l'image PKoi ?[img]

Reply

Marsh Posté le 23-08-2002 à 14:48:19   

Reply

Marsh Posté le 23-08-2002 à 14:52:38    

c pas super clair tout ça... :D  
 
t'as pas un exemple de ton code ?

Reply

Marsh Posté le 23-08-2002 à 16:06:42    

je veux bien, mais ca donne pas le defaut du result, mais en voici un bout...

Code :
  1. with MonImage do
  2. begin
  3. // on efface
  4. Canvas.Pen.Style:=psSolid;
  5.    Canvas.Brush.Color := clwhite;
  6.     Canvas.Pen.Color := clwhite;
  7.     Canvas.Rectangle(0,0,Width-1,Height-1);
  8. // trace les droites horizontales
  9. Canvas.Pen.Color := clMoneyGreen;
  10. Canvas.Pen.Style:=psDashDot;
  11. Canvas.Pen.Width:=1;
  12. for i:= 0 to 7 do
  13. begin
  14.        y:=trunc((Height-1)-(i*Height/7));
  15.         Canvas.MoveTo(0,y);
  16.     Canvas.LineTo(Width,y);
  17. end;
  18. end;


Voila, c'est pour dessiner une grille pour faire des courbes, la ya que les lignes horizontales. C'est peu t'etre ma facon d'effacer qui va pas, ou de recuperer la taille de l'image?
la j'ai mis stretch = true, si je le met à false, qd j'agrandit l'image qui a align = alclient, le dessin reste de la taille d'origine.
Donc si je resize et que je rapelle cette proc, l'image subit un zoom violent... bizare.
Ce que je veux, c'est que qd on rezise la fenetre, le trace soit redessiné pour gagné en precision.


Message édité par hhf le 23-08-2002 à 19:39:52
Reply

Marsh Posté le 23-08-2002 à 18:13:44    

hhf a écrit a écrit :

je veux bien, mais ca donne pas le defaut du result, mais en voici un bout...

Code :
  1. with MonImage do
  2. begin
  3. // on efface et on trace l'abcisse et l'ordonnée
  4. Canvas.Pen.Style:=psSolid;
  5.    Canvas.Brush.Color := clwhite;
  6.     Canvas.Pen.Color := clwhite;
  7.     Canvas.Rectangle(0,0,Width-1,Height-1);
  8. // trace les droites horizontales
  9. Canvas.Pen.Color := clMoneyGreen;
  10. Canvas.Pen.Style:=psDashDot;
  11. Canvas.Pen.Width:=1;
  12. for i:= 0 to 7 do
  13. begin
  14.        y:=trunc((Height-1)-(i*Height/7));
  15.         Canvas.MoveTo(0,y);
  16.     Canvas.LineTo(Width,y);
  17. end;
  18. end;


Voila, c'est pour dessiner une grille pour faire des courbes, la ya que les lignes horizontales. C'est peu t'etre ma facon d'effacer qui va pas, ou de recuperer la taille de l'image?
la j'ai mis stretch = true, si je le met à false, qd j'agrandit l'image qui a align = alclient, le dessin reste de la taille d'origine.
Donc si je resize et que je rapelle cette proc, l'image subit un zoom violent... bizare.
Ce que je veux, c'est que qd on rezise la fenetre, le trace soit redessiné pour gagné en precision.




 :pt1cable: Rien compris...
C ptet que je rentre de vacances :p


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 23-08-2002 à 19:40:31    

qu'est que tu comprend pas, je veux bien expliquer...

Reply

Marsh Posté le 23-08-2002 à 20:08:18    

je ne vois pas pourquoi tu t'occupes de stretch puisque tu dessines toi meme...donc laisse le à false, et branche toi plutot sur l'évenement OnResize du conteneur de ton TImage et là tu pourras placer la routine qui va tracer tes courbes en utilisant les bonnes dimensions

Reply

Marsh Posté le 23-08-2002 à 20:33:28    

je suis bien d'accord avec toi, mais si je met stretch = false, lorsque j'agrandi l'image, le canvas n'est pas resizé, il reste de la mm taille, mais ma proc à bien detecté les nouvelle taille de l'image, donc on a l'impression qu'il y a un zoom de fait.

Reply

Marsh Posté le 23-08-2002 à 20:35:10    

J'ai utilisé un TImage, pour pouvoir dessiner dedans via son TCanvas, mais ya peu t'etre plus logique pour faire du dessin??

Reply

Marsh Posté le 23-08-2002 à 20:45:05    

tu peux utiliser directement un TBitmap que tu crés à la volée...

Reply

Marsh Posté le 23-08-2002 à 21:35:50    

ben oui mais il n'y a pas que mon graph ds la form, alors un TBitmap ca pose prob, ya plus la proprieté align, je pourrais m'en passer si il y avais les proprieté top et left sur le TBitmap. Et je suis pas sur que ca resolve mon PB, car c'est ca le prob, le Timage est resizé, mais pas le canvas. Ou alors j'ai pas tous compris...
Merci de votre aide.

Reply

Marsh Posté le 23-08-2002 à 21:35:50   

Reply

Marsh Posté le 23-08-2002 à 21:42:37    

tu dessines dans le canvas du tbitmap que tu cré avec la taille de ton TImage puis tu l'assignes dans TImage.picture pour l'afficher (n'oublie pas de libérer le tbitmap)


Message édité par taureau le 23-08-2002 à 21:48:44
Reply

Marsh Posté le 23-08-2002 à 21:45:31    

c normal que lorsque le timage est redimmensionné la taille réelle du son contenu ne le soit pas...donc tu dois l'ajuster en conséquence

Reply

Marsh Posté le 23-08-2002 à 22:01:07    

ben moi je veux bien, mais yas pas de Canvas.width ou Canvas.Height.... alors comment resizé le canvas en fct de la taille du Timage parent ?

Reply

Marsh Posté le 23-08-2002 à 22:05:06    

tu donnes la taille à ton tbitmap...
 
mabitmap := TBitmap.create;
try
 mabitmap.width := ...
 ...
 mabitmap.canvas...
 ...
 monimage.picture.assign(mabitmap);
finally
 mabitmap.free;
end;
 
 

Reply

Marsh Posté le 23-08-2002 à 22:08:09    

Oui effectivement ca doit marché merci, je try ca de suite.

Reply

Marsh Posté le 23-08-2002 à 22:13:52    

Taureau a écrit a écrit :

tu donnes la taille à ton tbitmap...
 
mabitmap := TBitmap.create;
try
 mabitmap.width := ...
 ...
 mabitmap.canvas...
 ...
 monimage.picture.assign(mabitmap);
finally
 mabitmap.free;
end;
 
 
 




T en vacances ?
:hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 23-08-2002 à 22:16:44    

YES, THAT'S WORK
THANKS SO MUTCH
Merci taureau

Reply

Marsh Posté le 23-08-2002 à 22:18:09    

de rien hhf
 
poire non mais bon là je traine avant d'aller au lit  :D

Reply

Marsh Posté le 23-08-2002 à 22:21:30    

Taureau a écrit a écrit :

de rien hhf
 
poire non mais bon là je traine avant d'aller au lit  :D  




Enfin bravo pour le courage  :jap:  
Tu mérites une médaille
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 23-08-2002 à 22:23:47    

mouais...mais juste en chocolat alors car c'était pas si terrible  :D

Reply

Marsh Posté le 23-08-2002 à 22:25:36    

Taureau a écrit a écrit :

mouais...mais juste en chocolat alors car c'était pas si terrible  :D  




Pour la patience  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 23-08-2002 à 22:29:08    

j'avais compris  :D  
 
mais bon vu mon "grand" nombre de post j'ai encore une forte dose de patience en moi  :D

Reply

Marsh Posté le 23-08-2002 à 22:33:52    

Taureau a écrit a écrit :

j'avais compris  :D  
 
mais bon vu mon "grand" nombre de post j'ai encore une forte dose de patience en moi  :D  




Mais des posts tjs de qualités...
Il vaut mieux de la qualité que de la quantité comme dit le proverbe...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 23-08-2002 à 22:40:58    

on va pas aller si loin sur la qualité de mes posts heins ?
 
merci pour le chocolat je me dépêche de le prendre avant qu'il ne fonde sous "la qualité" de mes posts passés  :D

Reply

Marsh Posté le 23-08-2002 à 23:10:49    

Taureau a écrit a écrit :

on va pas aller si loin sur la qualité de mes posts heins ?
 
merci pour le chocolat je me dépêche de le prendre avant qu'il ne fonde sous "la qualité" de mes posts passés  :D  




 :lol:  
 :gun:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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