cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
19 déc. 2005 à 14:43
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
20 déc. 2005 à 09:58
Bonjour à tous,
J'ai un TImgView32 sur lequel je dessine dans le onPaint avec le pen comme ça:
with TPositionedLayer(Sender).GetAdjustedLocation do begin
for l := 1 to 3 do begin // Faire un trait de 3 pixels d'épaisseurs
Buffer.MoveTo(Round(gauche)+l,Round(Top));
Buffer.LineToAS(Round(gauche)+l,Round(Bottom));
end;
end;
Et tout marche à merveille, seulement, lorsque je veux faire un zoom (avant ou arrière, peu importe):
s := ImgView.Scale / 1.1;
if s < 0.2 then s := 0.2;
ImgView.Scale := s;
Mon trait, lui, n'est pas zoomé, il prend la même place qu'avant.
Comment cela se fait-ce ?
un pixel ne devrait pas prendre la même place lorsqu'il est zoomé !!!
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 19 déc. 2005 à 15:35
je serais presque sur en disant :
lineTo c'est du vectoriel donc si tu zoom, ça garde la meme taille.
essaye plutot en faisant :
with TPositionedLayer(Sender).GetAdjustedLocation do begin
Buffer.Pen.Width := 3;
Buffer.MoveTo(Round(gauche),Round(Top));
Buffer.LineToAS(Round(gauche),Round(Bottom));
end;
end;
si bien sur ton Timgview32 accepte "pen.width"
La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 19 déc. 2005 à 15:58
Salut F0xi,
Il n'y a pas de pen.width si on ne passe pas par le canvas, de plus, il faut des gros arrondis aux extremités, j'aimerais donc m'en abstenir.
Mais c'est dingue, le MoveTo(gauche+1,0) doit déplacer d'un pixel, nan ?
Donc, selon que l'image soit zoomée ou non, le pixel doit prendre plus ou moins de place...
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2005 à 09:58
Scale opère aussi sur les calques, mais pas leur contenu...
En fait, lorsque tu zoome, le calque est redimmensionné en conséquence mais c'est juste un effet graphique car l'unité graphique reste inchangée.
J'ai essayé avec un calcul de coeff mais c'est illogique car si on fait un zoom*3, il faut dessiner 9 lignes au lieu de 3...
Ca peut marcher éventuellement mais si je fait un zoom/4 ???