Quelle est la relation entre l'échelle du canevas et la taille du canevas ?
P粉621033928
P粉621033928 2023-07-25 12:33:23
0
1
551
<p>J'ai un png de 240x157 et la taille du div est de 120x88</p><p>J'ai donc créé une toile de 240x157 et collé le png. </p><p>La taille du div est plus petite que celle du png, mais le div a une barre de défilement et je peux utiliser la barre de déplacement pour voir l'image entière. C'est parfait. </p><p><code></code><code></code></p> <p><br /></p> <pre class="brush:js;toolbar:false;">var ctx = $('canvas')[0].getContext('2d'); console.log("test") var chara = nouvelle image(); chara.src = "https://dl.dropbox.com/s/yr8ehzbdwm0csc7/Madeira_-_Entrance_to_Town%2C_c._1900.jpg?dl=0"; chara.onload = () => ctx.clearRect(0, 0,240,157); ctx.drawImage(chara,0,0,240,157); }</pré> <pre class="brush:css;toolbar:false;">#whole{ bordure : 1 px solide ; largeur : 120 px ; hauteur : 78 px ; débordement : défilement ; }</pré> <pre class="brush:html;toolbar:false;"><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> ;</script> <div id="entier"> <id de toile="test" width="240px" height="157px"></canvas> </div></pré> <p><br /></p> <p>Mon but ultime est de changer l'échelle par l'utilisateur, et lorsque l'image est plus grande que le div, une barre de défilement apparaîtra, comme Photoshop, etc.
P粉621033928
P粉621033928

répondre à tous(1)
P粉561323975

Vous avez oublié de redimensionner le canevas et de définir overflow:auto pour que la barre de défilement disparaisse :


const canvas = $('canvas')[0];

var ctx = canvas.getContext('2d');
console.log("test")

var chara = new Image();
chara.src = "https://dl.dropbox.com/s/yr8ehzbdwm0csc7/Madeira_-_Entrance_to_Town%2C_c._1900.jpg?dl=0";

$zoom.addEventListener('input', () =>{

  const zoom = $zoom.value * .5;

  canvas.width = 240 * zoom;
  canvas.height = 157 * zoom;

  ctx.scale(zoom,zoom) // adding here.

  ctx.clearRect(0, 0,240,157);
  ctx.drawImage(chara,0,0,240,157);


});


chara.onload = () => { 
      ctx.clearRect(0, 0,240,157);
      ctx.drawImage(chara,0,0,240,157);

 }
#whole{
  border:1px solid;
  width:120px;
  height:78px;
  overflow:auto;
  
}
canvas{
margin:0;
display:block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="$zoom" type="range" min="1" max="10" value="2">
<div id="whole">
<canvas id="test" width="240px" height="157px"></canvas>
</div>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal