[CSS] Canevas - Réticule

Canevas - Réticule [CSS] - HTML/CSS - Programmation

Marsh Posté le 22-01-2025 à 11:34:14    

Salut

 

J'aurais besoin de dessiner un réticule au-dessus d'un iframe.
Or bizarrement malgré le fait que le css indique une épaisseur de trait de 1 pixel, et bien à l'écran ca en a nettement plus.
Même le trait verticale semble plus fin que l'autre. Alors que le paramètre d'épaisseur est identique.

 

Autre bizarrerie, pour centrer les traits bien au milieu et bien je ne peux pas utiliser le milieu de mon canvas en px, au lieu de ca je dois commencer à 74 respectivement 150.
Je précise que le canvas fait.

Code :
  1. canvas {
  2.             position: relative;
  3.             width: 640px;
  4.             height: 480px;
  5.         }
 
Code :
  1. const canvas = document.querySelector('#frame');
  2.         const ctx = canvas.getContext('2d');
  3.         ctx.strokeStyle = "red";
  4.         ctx.lineWidth = 1;
  5.         ctx.beginPath();
  6.         ctx.setLineDash([1, 1]);
  7.         ctx.moveTo(0,74);
  8.         ctx.lineTo(640,74);
  9.         ctx.moveTo(150,0);
  10.         ctx.lineTo(150,480);
  11.         ctx.stroke();
 

https://rehost.diberie.com/Picture/Get/f/344175
(png l'image, ce n'est pas la compression jpeg qui fait ca)

 

Bref, vous auriez une explication à cette bizarrerie.

 

Merci


Message édité par fredo3 le 22-01-2025 à 13:35:33
Reply

Marsh Posté le 22-01-2025 à 11:34:14   

Reply

Marsh Posté le 22-01-2025 à 13:08:19    

Tu as spécifié les dimensions du canevas dans ton CSS. Mais il y a là une subtilité : cela va donner la dimension finale d'affichage de l'élément, mais pas la résolution intrinsèque du canevas, qui va rester par défaut en 300×150. Ainsi ça va rendre une image de 300×150 étirée vers 640×480, et donner cet aspect. D'où aussi le centrage à ~150 & ~75.

 

Il te faut donc mettre les dimensions sur le tag :

Code :
  1. <canvas width="640" height="480">


Message édité par FlorentG le 22-01-2025 à 13:11:44
Reply

Marsh Posté le 22-01-2025 à 13:32:17    

Ah ça marche en effet.
 
Merci beaucoup :jap:

Reply

Marsh Posté le 22-01-2025 à 16:12:58    

Encore moi  
 
Comment on fait pour changer la transparence des traits???
 
J'ai bien utilisé la commande globalAlpha = 0.5, mais elle ne semble s'appliquer qu'au text  :heink:  
https://rehost.diberie.com/Picture/Get/f/344277

Reply

Marsh Posté le 22-01-2025 à 16:27:50    

Tu peux mettre des couleurs rgba dans ton stroke style

Code :
  1. ctx.strokeStyle = 'rgba(255,0,0,0.5)';


=> rouge 100% / alpha 50%


---------------
D3
Reply

Marsh Posté le 22-01-2025 à 17:15:44    

Maintenant c'est le texte que j'arrive pas à mettre en alpha 1  [:tinostar]

 

Pourtant je suis bien repassé à 100% avant d'écrire le texte.

Code :
  1. ctx.strokeStyle = "rgba(44, 53, 120, 100%)";
  2. ...
  3. ctx.fillText(degree+"°",center_x+pos-3,center_y+main_bar_height-30);
 

https://rehost.diberie.com/Picture/Get/f/344295

 


C'est quoi que cette diablerie?  [:tinostar]


Message édité par fredo3 le 22-01-2025 à 17:16:43
Reply

Marsh Posté le 22-01-2025 à 17:17:00    

Au pif: Faut mettre une valeur entre 0 et 1 et pas des %?? :??:


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 22-01-2025 à 17:17:30    

Non ca fait pareil

Reply

Marsh Posté le 22-01-2025 à 17:20:15    

C'est du HTML/CSS, c'est de la diablerie, comme tu dis. :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 22-01-2025 à 17:28:39    

La commande:
 
ctx.stroke();
 
Suffit de la faire une seule fois à la fin après avoir tracé toutes les lignes n'est-ce pas?

Reply

Marsh Posté le 22-01-2025 à 17:28:39   

Reply

Marsh Posté le 22-01-2025 à 17:39:30    

C'est bon, ça marche.

 

J'avais pas compris qu'avant de changer les couleurs il fallait que je fasse un:

 

ctx.beginPath();

 

https://rehost.diberie.com/Picture/Get/f/344301


Message édité par fredo3 le 22-01-2025 à 17:41:18
Reply

Sujets relatifs:

Leave a Replay

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