首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript单击并居中调整画布图像的大小

问使用javascript单击并居中调整画布图像的大小
EN

Stack Overflow用户
提问于 2010-10-11 01:50:02
回答 1查看 1.4K关注 0票数 1

如何缩放包含在<canvas>标签中的照片?特别是,我想放大用户点击点上的照片。

缩放并不难做到:

代码语言:javascript
复制
img.width = img.width + 100;
img.height = img.height + 100;
ctx.drawImage(img,0,0,img.width,img.height);

问题是,我也想把放大的图像放在点击点的中心,就像普通的放大镜一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-11 02:21:58

[Working demo]

Data

R

  • Canvas位置调整大小:Ih

  • Resized大小:Ch,
  • 调整大小的图像大小:Iw,Ch图像位置:
  • 在画布上的位置:Iw,原始图像上的Pcy
  • Click位置:<Iw>D24>,调整大小的图像上的Poy
  • Click位置:<

>D28>,Pry

方法

  1. 单击画布上的事件位置图像上的位置:Pox = Pcx - Ix,Poy = Pcy - Iy
  2. 图像上的位置->调整大小后的位置图像:Prx = Pox * R,Pry = Poy * R
  3. top = (Ch / 2) - Pry,left = (Cw / 2) - Prx
  4. ctx.drawImage(img, left, top, img.width, img.height)

Implementation

代码语言:javascript
复制
// resize image
I.w *= R;
I.h *= R;

// canvas pos -> image pos
Po.x = Pc.x - I.left;
Po.y = Pc.y - I.top;

// old img pos -> resized img pos
Pr.x = Po.x * R;
Pr.y = Po.y * R;

// center the point
I.left = (C.w / 2) - Pr.x;
I.top  = (C.h / 2) - Pr.y;

// draw image
ctx.drawImage(img, I.left, I.top, I.w, I.h);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3901413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档