首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布绘制背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、鼠标滚轮缩放中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面 Canvas 画布某个位置 , Canvas 画布绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , Canvas 绘制图片尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布 x..., y 坐标 , 同时可以计算出当前位置对应图片中 水平方向比例 和 垂直方向比例 ; 缩放后图片中 , 只要保证鼠标指针指向相同 x, y 坐标时 , 该位置对应 水平方向比例 和...记录鼠标指针指向界面 Camvas 画布坐标位置 ; pointer_ratio_x 和 pointer_ratio_y 记录鼠标指针指向位置对应图片中坐标位置比例 ; public..., 保存当前鼠标位置及比例 ; 鼠标滚轮事件 MouseWheelEvent , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 Canvas 画布坐标 ;

2.7K10

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布绘制背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

} }); 二、键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 【Java AWT 图形界面编程...】Canvas 绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动...; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时..., 拖动效果也随之缩放, 如 缩小画布后 , 移动鼠标 , 移动距离对应缩放效果也随之缩小 ; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布绘制背景图像 (...鼠标滚轮事件监听器 MouseWheelListener | Canvas 绘制图像并设置图像大小 ) 博客 , 使用缩放背景图像方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客实现案例

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

画布就是一切(一)— 画布编程基本模式

也许读者没有开发过C#,不知道所谓GDI+是什么。简单来讲,很多开发语言都提供所谓画布以及绘制能力(比如html5canvas标签,C#Graphics对象等)。...(黑色边框是为了便于看到画布边界加上): 为了方便后续实现,以及适应目前Web前端化,我们使用html 5 canvas来进行代码编写、演示。...,控制台就能看到坐标输出: PS:实际上在对canvas有不同缩放、CSS样式加持下,坐标的计算会更加复杂,本文只是简单获取鼠标canvas坐标,不做过多讨论,想要深入了解可以看这篇大佬文章...:鼠标不断canvas上进行移动,移动过程鼠标矩形外部移动时候,控制台会不断输出文本:mouse in rect: false,而当鼠标一旦进入了矩形内部,控制台则会输出:mouse in...本例,这问题凸显效果看出不出,但是试想如果我们输入更新时候,修改了矩形x或y值,就会发现画布上会有多个矩形图像了(因为上一个位置矩形已经被“画”画布上了)。

18120

画布就是一切(一)— 画布编程基本模式

也许读者没有开发过C#,不知道所谓GDI+是什么。简单来讲,很多开发语言都提供所谓画布以及绘制能力(比如html5canvas标签,C#Graphics对象等)。...(黑色边框是为了便于看到画布边界加上): 为了方便后续实现,以及适应目前Web前端化,我们使用html 5 canvas来进行代码编写、演示。...,控制台就能看到坐标输出: PS:实际上在对canvas有不同缩放、CSS样式加持下,坐标的计算会更加复杂,本文只是简单获取鼠标canvas坐标,不做过多讨论,想要深入了解可以看这篇大佬文章...:鼠标不断canvas上进行移动,移动过程鼠标矩形外部移动时候,控制台会不断输出文本:mouse in rect: false,而当鼠标一旦进入了矩形内部,控制台则会输出:mouse in...本例,这问题凸显效果看出不出,但是试想如果我们输入更新时候,修改了矩形x或y值,就会发现画布上会有多个矩形图像了(因为上一个位置矩形已经被“画”画布上了)。

21810

画布就是一切(一)— 画布编程基本模式

也许读者没有开发过C#,不知道所谓GDI+是什么。简单来讲,很多开发语言都提供所谓画布以及绘制能力(比如html5canvas标签,C#Graphics对象等)。...(黑色边框是为了便于看到画布边界加上): 为了方便后续实现,以及适应目前Web前端化,我们使用html 5 canvas来进行代码编写、演示。...,控制台就能看到坐标输出: PS:实际上在对canvas有不同缩放、CSS样式加持下,坐标的计算会更加复杂,本文只是简单获取鼠标canvas坐标,不做过多讨论,想要深入了解可以看这篇大佬文章...:鼠标不断canvas上进行移动,移动过程鼠标矩形外部移动时候,控制台会不断输出文本:mouse in rect: false,而当鼠标一旦进入了矩形内部,控制台则会输出:mouse in...本例,这问题凸显效果看出不出,但是试想如果我们输入更新时候,修改了矩形x或y值,就会发现画布上会有多个矩形图像了(因为上一个位置矩形已经被“画”画布上了)。

19320

AI干货-Adobe illustrator羽毛状线条如何绘制【附安装包】

各版本安装包获取:http://jiaocheng8.top/ai.html?...,就比如今天小编在身边AI大神指导下新学会羽毛状线条绘制方法,现在小编将这个绘画方法通过以下文章方式分享给大家,一起学习!   ...打开AI,新建画布,大小随意   选择工具栏“ 弧形工具 ”   鼠标移至画布鼠标单击一下定点,不松手情况下拖动鼠标,就会绘制一个弧线, 绘制按住空格可以自由移动   画布单击绘制图形...,不松手时 按F键 ,可以改变图形方向-相反方向   绘制图形时,不松手状态下按字母C,可以形成闭合路径,再次按C,取消闭合路径   绘制图形时, 不松手状态下按方向键↑↓箭头 ,可以改变圆弧弧度...  绘制图形时,不 松手状态下按“~”键 ,同时拖动鼠标移动位置,可以绘制多个圆弧。

68920

Canvas网页涂鸦板再次增强版

第一版Canvas涂鸦板 实现功能:涂鸦板上鼠标按下去拖动涂鸦效果 实现思路:监听鼠标按下、移动、松开事件,将鼠标按下值赋值给moveTox和y值,作为起始位置。...移动事件,将鼠标距离可视区x和y值赋给lineTo,再进行描边。 实现代码 <!...实现对涂鸦涂鸦板生成图片 实现思路: 后退和前进(撤回)功能,我想法是每画一次就将整个画布数据push到一个数组,按前进和后退时再将对应数据取出来,这个可以通过getImageData和putImageData...方法实现,这两个方法使用可以到http://www.w3school.com.cn/tags/html_ref_canvas.asp查看。...选择画布颜色功能有两种(获取颜色板方法和第二版设置画笔颜色相同) 第一种就是将颜色设置为画布css背景颜色,但是实现生成图片时候不会把背景颜色生成 第二种就是直接在画布上画一个填充矩形,设置填充颜色

1.2K30

使用React和Node构建实时协作白板应用

本文将展示如何使用React和Node构建一个提供实时协作白板Web应用程序。 实时协作涉及多个用户共同任务或项目上进行动态和即时互动。...Canvas是一个HTML元素,它作为一个空白画布,我们可以使用JavaScript来绘制、绘画和操作图形元素。...: 让我们来测试我们应用程序:上面的视频显示我们代码可以工作,并且可以使用鼠标坐标我们白板上绘制线条。...我们画布上画矩形线条 我们白板上绘制矩形过程与绘制直线几乎相同,只有使用 createElement 函数时才会有所变化。...同时,如果您想获取更多前端技术知识,欢迎关注我,您支持将是我分享最大动力。我会持续输出更多内容,敬请期待。

41820

vue使用canvas签名之PC端

需求 一些项目业务,经常会使用到画板,让用户自己去写/画一些东西做标示,比如说在线签电子合约、签名等,如果不用插件,那么如何使用h5canvas画布来实现这一需求呢?...首先,需要一个canvas画布 其次,考虑逻辑 把逻辑实现 1. canvas画布 随意布局一个画布,此处值得注意是如果canvas宽高确定,则在html>canvas中直接写宽高,如果不确定,根据别的元素变化...,那么可以js初始化画布时写。...判断是否开启画布操作,如果没开启我们当然不能鼠标画布上移动就给绘制吧,因此先判断是否当前状态可绘制 获取鼠标画布位置 上一个点到这一个点作连线 绘制出来 当前点存储,下一次用 可能此处有些迷,大概意思就是...,鼠标不停运动,某一时刻鼠标的位置A(x,y),在下一时刻A则会变成上一个位置,我们思路无非是不断绘制鼠标上一个时刻到当前时刻路径而已。

1.4K10

HTML5图形绘制

HTML5标签结合JavaScript可以完成图形绘制。标签是图形容器,使用脚本来绘制绘制路径、盒子、圆、字符等图形。...一个画布在网页是一个矩形框,通过标签来绘制,标签默认没有边框和内容,需要使用style属性来添加边框。...canvas标签通常需要指定一个id属性(脚本需要引用),width和height属性定义画布大小。可以HTML页面中使用多个标签。示例如下。 [image.png] JavaScript画布绘图需要首先创建画布,然后创建context对象,最后调用相关属性和方法完成绘图。...fillRect(0,0,150,100)是指在画布绘制150100矩形,从左上角开始(0,0)。画布X和Y坐标用于画布上对绘画进行定位,鼠标移动矩形框上,显示定位坐标。

2.1K00

可视化初探上

缺点在渲染引擎,SVG 元素和 HTML 元素一样,输出图形前都需要经过引擎解析、布局计算和渲染树生成。...;调用绘图指令,比如 rect,表示绘制矩形;调用 fill 指令,将绘制内容真正输出画布上。...因为 Canvas HTML 层面上是一个独立画布元素,所以所有 绘制内容都是在内部通过绘图指令来完成绘制图形对于浏览器来说,只是 Canvas 一个个像素点,我们很难直接抽取其中图形对象进行操作...比如说, HTML 或 SVG 绘制一系列图形时候,我们可以一一获取这些图形元素对象,然后给它们绑定用户事件。但同样操作 Canvas 没有可以实现简单方法。...对于圆形层次关系图来说, Canvas 图形上定位鼠标处于哪个圆并不难,我们只需要计算一下鼠标到每个圆圆心距离,如果这个距离小于圆半径,我们就可以确定鼠标某个圆内部了。

1.7K60

原生小案例:如何使用HTML5 Canvas构建画板应用程序

使用HTML5 Canvas构建绘图应用是Web浏览器创建交互式和动态绘图体验绝佳方式。HTML5 Canvas元素提供了一个绘图表面,允许您操作像素并以编程方式创建各种形状和图形。...此外,使用HTML5 canvas构建绘图应用程序允许用户与画布进行交互,捕捉鼠标移动和点击事件,实时绘制、擦除或操作元素。...HTML设置 您可以使用HTML5 Canvas以以下方式为绘图应用程序设置HTML结构: 代码编辑器创建一个新HTML文件或打开一个已存在文件。 从基本HTML结构开始,通过包含 <!...以下是您可以使用JavaScript处理画布元素功能和交互几种方式: 你需要使用canvas元素IDJavaScript访问它,并获取绘图上下文。绘图上下文提供了canvas上绘制方法。...使用 mousedown 事件开始绘制使用 mousemove 事件鼠标移动时绘制使用 mouseup 事件释放鼠标按钮时停止绘制使用 mouseout 事件光标移出画布时停止绘制

31621

手把手教你利用JS给图片打马赛克

效果演示 Canvas 简介 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript) 不过, 元素本身并没有绘制能力(它仅仅是图形容器) - 您必须使用脚本来完成实际绘图任务 get...Canvas 简介 这个 HTML 元素是为了客户端矢量图形而设计。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制东西都绘制到一块画布上。...HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript) 不过, 元素本身并没有绘制能力(它仅仅是图形容器) - 您必须使用脚本来完成实际绘图任务 getContext() 方法可返回一个对象...,该对象提供了用于画布上绘图方法和属性 本手册提供完整 getContext("2d") 对象属性和方法,可用于画布绘制文本、线条、矩形、圆形等等 标记和 SVG 以及 VML 之间差异:...这两种方式功能上是等同,任何一种都可以用另一种来模拟。从表面上看,它们很不相同,可是,每一种都有强项和弱点。例如,SVG 绘图很容易编辑,只要从其描述移除元素就行。

1.4K20

《Android游戏编程之从零开始》笔记「建议收藏」

(Color.BLACK); 第三种 每次绘图之前,指定RGB来填充画布 canvas.drawRGB(0,0,0); 第四种 每次绘图之前,绘制一张等同于屏幕大小图片覆盖画布上...首先遍历算出一张位图所有的像素点坐标,然后与另外一张位图上所有点坐标进行对比,一旦有一个像素点坐标相同, d。多矩形碰撞 多个矩形碰撞区域 e。...,不支持多个音频同时播放等。...不要轻易使用pause和stop方法,容易造成程序莫名终止。音频格式最好用OGG格式。一般不在构造调用播放函数进行播放,需要加载时间。 2)优点:支持多个音乐文件同时播放。...实际使用,需要通过摇杆控制游戏主角移动,首先将整个360°分成4或8等分 2.多触点实现图片缩放 3.触屏手势识别 根据玩家接触屏幕时间长短、屏幕上滑动距离、按下抬起时间等包装,就是触屏事件监听

1.2K21

❤️创意网页:震撼视觉效果2(真的十分好看) - 创造炫酷粒子动画

今天,我们将一起学习如何使用HTML5 Canvas和JavaScript创造震撼视觉效果。我们将绘制彩色粒子,使其鼠标移动轨迹上生成,形成炫酷粒子动画。让我们开始吧!...> 绘制彩色粒子 我们HTML文件,我们已经有了一个空Canvas元素,其ID为canvas,并且我们已经设置了Canvas宽度和高度与窗口大小相同。...最后,我们定义了一个createParticles函数,用于鼠标移动事件创建粒子。动画循环函数animate,我们使用requestAnimationFrame方法来循环绘制和更新每个粒子。...每一帧,我们首先使用ctx.clearRect方法来清空画布,然后遍历每个粒子对象,分别调用其update和draw方法。...> 代码使用方法(超简单什么都不用下载) 1.打开记事本 2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可 3.打开html文件(大功告成(●'◡'●)) 总结 本篇博客

11710

手写原生代码专题 | 简易手写画板(二)

1.1 创建画布 Html 文档创建一个画布,然后使用document.getElementById('canvas') 方法获取画布...,接下来调用 canvas.getContext('2d') 使用2D模式渲染画布,然后我们就可以画布里进行画直线画圆操作了。...); 二、编写HTML代码 复习完基础知识后,我们开始编写具体代码,HTML 结构比较简单,如视频示例所示,一个画布、两个增加线条粗细加减按钮、一个显示粗细数值文本、一个调整颜色 HTML5...接着继续定义鼠标松开状态 mouseup 方法,更改鼠标按下状态为 false ,然后将鼠标 x,y 位置值更改为 undefined 继续定义监听画布鼠标移动方法 mousemove ,捕捉当前鼠标的...x,y值,先以线条宽度绘制圆形,然后以鼠标按下时 x,y 值为直线起点,鼠标移动时获取鼠标的 x,y 值为终点绘制直线。

1.4K20

WPF 自己封装 Skia 差量绘制控件

使用 Skia 能做到多个不同平台使用相同一套 API 绘制相同界面效果图片,可以将图片绘制到应用程序渲染显示里面。... WPF 中最稳方法就是通过 WriteableBitmap 作为承载绘制。本文告诉大家如何封装一个支持差量绘制控件,默认绘制方法都是每次都是不保存上次绘制内容,而且清空画布,重新绘制。...这样绘制方法显然效率不够高 在上一篇博客里面告诉大家如何在 WPF 中使用 Skia 绘制,请看 WPF 使用 Skia 绘制 WriteableBitmap 图片 而这样绘制方式意味着每次都需要重新绘制画布...或者换句话说,这里绘制逻辑有坑在于不能做到对准界面更新 上面这个方法是提供差量更新,也就是每次绘制内容都会在上一次画布基础上继续绘制 下面写一点代码试试,鼠标划过应用时,绘制鼠标划过点,将这些点连为线...,为什么需要给他这个值,在上文告诉了大家 接下来 UIElement_OnMouseMove 方法,也就是 Grid 容器收到鼠标划过事件,将划过点作为线段画布 private

1K30

邀你看一场浪漫烟火 -- canvas放烟花

创建 canvas画布 js先获取标签,设置画布大小,采用resize监听页面的调整,及时改变画布大小 // 元素获取 const canvas = document.querySelector...实现烟花散开 有了上面的铺垫,每一个小圆点都是即将要散开烟花,那么我们只需要更新画布让它半径不断增大即可,实现散开效果很简单,那部分代码就不贴了(节省篇幅),对于更新画布,采用一个html5新方法...隐藏或不可见元素,requestAnimationFrame将不会进行重绘或回流,会减少对内存使用 requestAnimationFrame 会把每一帧所有DOM操作集中起来,一次重绘或回流中就完成...y方向加大一点,这样就会实现了一个抛物线效果,同时,对于烟花爆炸应当还要有个殆尽效果,我们通过改变透明度来实现,对于透明度小于0我们将它从数组移除 let moveX = Math.cos(firework.radians...continue; } 改变了算法 每次画布更新都要让透明度降低,同时每个粒子移动半径不断地减小,这样会形成向中间合拢趋势,由于每个粒子都存放在数组当中,当粒子透明度小于0,从数组移除

2.1K50

前端canvas基础复习,canvas学习笔记,持续记录

最开始学html5时候,曾特意了解过canvas,还记得当时为了搞明白canvasapi,绞尽脑汁了很多个日日夜夜。 但实际工作后用非常少,到现在canvasapi忘也差不多了。...Canvas基础 1.介绍 Canvas API(画布)是HTML5新增标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作位图(bitmap)。...WebGL 使得网页支持 HTML 标签浏览器,不需要使用任何插件,便可以使用基于 OpenGL ES 2.0 API canvas 中进行 3D 渲染。...4.使用多层画布去画一个复杂场景 某些对象需要经常移动或更改,而其他对象则保持相对静态。在这种情况下,可能优化是使用多个元素对您项目进行分层。...这么做可以避免每一帧画布绘制大图。 6.用 CSS transforms 特性缩放画布 CSS transforms 使用 GPU,因此速度更快。

2.3K40
领券