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

【Java AWT 图形界面编程】 Canvas 画布绘制箭头图形 ( 数据准备 | 几个关键计算公式 | 绘制箭头直线和尾翼 )

文章目录 一、 Canvas 画布绘制箭头图形 - 要点分析 1、数据准备 2、绘制直线 3、绘制箭头尾翼 二、代码示例 一、 Canvas 画布绘制箭头图形 - 要点分析 ---- 1、数据准备...绘制箭头时 , 先设置一条直线起始点和终止点 , 箭头绘制该线段上 ; /** * 起始点 X, Y 坐标 * 终止点 X, Y 坐标 */ private..., x , y 轴上差值 ; // 计算起始点和终止点在 x, y 方向差值 int deltaX = endX - startX; int deltaY..., 根据该长度 , 确定箭头终点坐标 ; 下图中蓝色箭头 , 就是计算出箭头尾部相对于起始点增量 ; // 设置箭头终点在直线位置 , 根据比例计算出箭头长度..., 箭头位置 ; 尾翼起始点 arrowEndX, arrowEndY , 终止点需要根据角度计算出来 ; // 绘制箭头 尾翼 线段 , 直线角度 增减 45 度 , 即可获得尾翼角度

1.4K20

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

一、鼠标滚轮缩放中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面中 Canvas 画布某个位置 , Canvas 画布绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , Canvas 中绘制图片尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布 x..., y 坐标 , 同时可以计算出当前位置对应图片中 水平方向比例 和 垂直方向比例 ; 缩放后图片中 , 只要保证鼠标指针指向相同 x, y 坐标时 , 该位置对应 水平方向比例 和..., 保存当前鼠标位置及比例 ; 鼠标滚轮事件 MouseWheelEvent 中 , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 Canvas 画布坐标 ;...鼠标滚轮缩放完成后 , 再根据鼠标指针指向位置和比例 , 结合图片缩放后尺寸 , 重新计算画布偏移位置 , 以达到鼠标指向图片元素位置基本保持不变目的 ; /** * 计算新比例

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

【Canvas】入门 - 实现图形以及图片绘制

通俗来讲,就是使用属性画布图形该是多大还是多大,而使用样式就会把画布图形扩大。...绘图步骤 拿到canvas画布 通过canvas拿到绘图上下文(一系列API集合) 使用API绘制需要图形 // 1....,相当于移动画笔至某个位置 x,y都是相对于canvas盒子坐标 绘制必须先设置起点,否则不生效 lineTo() :绘制直线 ctx.lineTo(x,y); 从x,y位置绘制一条直线到起点或者上一个线头点...(img,x,y) 绘制图片 x,y表示绘制画布什么位置 ctx.drawImage(img,x,y,sWidth,sHeight) sWidth,sHeight表示绘制图片大小 ctx.drawImage...(img,x,y,sWidth,sHeight,x,y,width,height) 参数2,3,4,5表示从图片那个位置截取多大图片 参数6,7,8,9表示会知道画布那个地方,以及绘制大小

1.1K20

Carson带你学Android:自定义View Canvas类使用教程

简介 定义:画布,是一种绘制规则 是安卓平台2D图形绘制基础 作用:规定绘制内容时规则 & 内容 记住:绘制内容是根据画布规定绘制屏幕上 理解为:画布只是绘制规则,但内容实际上是绘制屏幕上...Canvas本质 请务必记住: 绘制内容是根据画布(Canvas)规定绘制屏幕上 画布(Canvas)只是绘制规则,但内容实际上是绘制屏幕上 为了更好地说明绘制内容本质和Canvas,...总结 绘制内容是根据画布规定绘制屏幕上 内容实际上是绘制屏幕上; 画布,即Canvas,只是规定了绘制内容时规则; 内容位置由坐标决定,而坐标是相对于画布而言 注:关于对画布操作(缩放...4.2.3 绘制文字 绘制文字分为三种应用场景: 情况1:指定文本开始位置 即指定文本基线位置 基线x默认字符串左侧,基线y默认字符串下方 情况2:指定每个文字位置 情况3:指定路径,并根据路径绘制文字...绘制矢量图(drawPicture) 作用:绘制矢量图内容,即绘制存储矢量图里某个时刻Canvas绘制内容操作 矢量图(Picture)作用:存储(录制)某个时刻Canvas绘制内容操作 应用场景

2.3K10

Canvas类最全面详解 - 自定义View应用系列

Canvas本质 请务必记住: 绘制内容是根据画布(Canvas)规定绘制屏幕上 画布(Canvas)只是绘制规则,但内容实际上是绘制屏幕上 为了更好地说明绘制内容本质和Canvas,...总结 绘制内容是根据画布规定绘制屏幕上 内容实际上是绘制屏幕上; 画布,即Canvas,只是规定了绘制内容时规则; 内容位置由坐标决定,而坐标是相对于画布而言 注...绘制文字 绘制文字分为三种应用场景: 情况1:指定文本开始位置 即指定文本基线位置 基线x默认字符串左侧,基线y默认字符串下方 情况2:指定每个文字位置 情况3:指定路径,并根据路径绘制文字...情况3:指定路径,并根据路径绘制文字 关于Path类使用请看我写文章:Path类最全面详解 - 自定义View应用系列 // 路径(540,750,640,450,840,600)写上"...绘制矢量图(drawPicture) 作用:绘制矢量图内容,即绘制存储矢量图里某个时刻Canvas绘制内容操作 矢量图(Picture)作用:存储(录制)某个时刻Canvas绘制内容操作

2.9K81

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

, 计算最新偏移 restore(); repaint(); // 重新绘制画布 }...} }); 二、键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 【Java AWT 图形界面编程...; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客中 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时..., 拖动效果也随之缩放, 如 缩小画布后 , 移动鼠标 , 移动距离对应缩放效果也随之缩小 ; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布绘制背景图像 (...H 标识放置界面中心 ; 将鼠标指针放在 H 位置 , 点击一次 , 按下数字键 9 , 放大 9 倍效果如下 :

1.8K20

第157天:canvas基础知识详解

) (重点) 2.6.1 基本绘制图片方式 2.6.2 画布绘制图像,并规定图像宽度和高度 2.6.3 图片裁剪,并在画布上定位被剪切部分 2.6.4 用JavaScript创建img...相当于移动画笔到某个位置 * 参数:x,y 都是相对于 canvas盒子最左上角。 * 注意:**绘制线段前必须先设置起点,不然绘制无效。...文本指定位置开始。 end : 文本指定位置结束。 center: 文本中心被放置指定位置。 left : 文本左对齐。 right : 文本右对齐。     ...2.5.2 上下文绘制文字方法 * ctx.fillText()      画布绘制“被填充”文本 * ctx.strokeText()    画布绘制文本(无填充) * ctx.measureText...3.5 画布限定区域绘制(了解) ctx.clip(); 方法从原始画布中剪切任意形状和尺寸 一旦剪切了某个区域,则所有之后绘图都会被限制在被剪切区域内(不能访问画布其他区域) 一般配合绘制环境保存和还原

5K21

Canvas入门到高级详解(上)

相当于移动画笔到某个位置 * 参数:x,y 都是相对于 canvas盒子最左上角。 * 注意:**绘制线段前必须先设置起点。...2.3.10 清除矩形(clearRect) * 语法:ctx.clearRect(x, y, width, hegiht); * 解释:清除某个矩形内绘制内容,相当于橡皮擦。...文本指定位置开始。 end : 文本指定位置结束。 center: 文本中心被放置指定位置。 left : 文本左对齐。 right : 文本右对齐。...image 2.5.2 上下文绘制文字方法 * ctx.fillText() 画布绘制“被填充”文本 * ctx.strokeText() 画布绘制文本(无填充) * ctx.measureText...2.6.2 画布绘制图像,并规定图像宽度和高度 context.drawImage(img,x,y,width,height); 参数说明:width 绘制图片宽度, height:绘制图片高度

1.7K31

一起学习PHP中GD库使用(二)

,第二和第三个参数用于指定圆心位置,第四第五个参数指定圆宽度和高度,第六、第七个参数指定弧线起始位置(以角度指定),最后一个参数就是指定颜色。...它们第二个参数都是字体大小,第三和第四个参数是开始写字坐标起始位置。不过,使用这些函数对图片进行内容书写的话,最主要一个问题就是不能指定字体,这样默认情况下中文是没办法输出。...使用 imagepng() 就能生成一张 PNG 格式图片,它还有第二个参数,如果给定了第二个参数,那么图片就会直接以文件形式保存到参数指定路径中。...总结 不管之前有没有自己写过这种验证码小工具,今天内容相信都是一次系统学习和回顾,因为我们是按着顺序从创建一张图片画布,到绘制线条和图形,再到添加文字,最后生成图片这一系列步骤走下来。...以后不管是面试还是自己做小工具时候,记住这条线,然后参考文档就可以啦。毕竟这些函数参数都还是挺长挺乱,除非天天用,要不可真记不住。

87640

H5canvas绘图技术

重新设置canvas标签宽高属性会导致画布擦除所有的内容。 可以给canvas画布设置背景色 1.3 canvas坐标系 开始绘制任何图像之前,我们先讲一下canvas坐标系。...相当于移动画笔到某个位置。 * 参数:x,y 都是相对于 canvas坐标系原点(左上角)。 * 注意: 绘制线段前必须先设置起点,不然绘制无效。...1.7 绘制文字 canvas 提供了两种方法来渲染文本: fillText(text, x, y [, maxWidth]) 指定(x,y)位置填充指定文本,绘制最大宽度是可选. strokeText...(text, x, y [, maxWidth]) 指定(x,y)位置绘制文本边框,绘制最大宽度是可选....2.画布绘制图像,并规定图像宽度和高度 context.drawImage(img,x,y,width,height); 参数说明:width 绘制图片宽度,  height:绘制图片高度

1K10

JavaScript 编程精解 中文第三版 十七、画布上绘图

另外,画布绘制图像同时会把图像转换成像素(栅格中具有颜色点)并且不会保存这些像素表示内容。唯一移动图形方法就是清空画布(或者围绕着图形部分画布)并在新位置重画图形。...所以(10,10)是相对于左上角向下并向右各偏移 10 像素位置。 直线和平面 我们可以使用画布接口填充图形,也就是赋予某个区域一个固定填充颜色或填充模式。...每个线段都是由lineTo以当前位置路径起点绘制。除非调用了moveTo,否则这个位置通常是上一个线段终点位置。如果调用了moveTo,下一条线段会从moveTo指定位置开始。...,然后适当位置绘制游戏场景。...因为画布形状只是像素,所以我们绘制它们之后,没有什么好方法来移动它们(或将它们移除)。 更新画布显示唯一方法,是清除它并重新绘制场景。 我们也可能发生了滚动,这要求背景处于不同位置

3.7K30

Android开发笔记(十三)视图绘制几个方法

三个可进行绘制方法 自定义视图中,有三个函数可以重写用于界面绘制视图创建过程中,三个函数执行顺序依次是:onLayout、onDraw、dispatchDraw。...由于该函数没有画布,因此只适合绘制现成视图控件。 2、onDraw(Canvas canvas) :  自定义控件一般是重写onDraw方法,画布绘制各种图形。...下面列出Canvas常用方法: 划定可绘制区域(裁剪区域) 虽然本视图内所有区域都是可以绘制,但是有时候我们还是只想在某个圆形区域或者矩形区域内部画画,那么绘制之前就得指定允许绘制区域大小...: 平移画布 存取画布状态 Canvas不同绘制操作会互相影响,比如说我们想对整个画布做旋转,除了某个直线(即该直线保持不动),如果没有状态机制,那么该直线也只能跟着旋转。...有了状态机制,我们就可以绘制该直线前保存画布状态(保存旋转操作),然后画直线,最后再恢复画布状态。

1K30

Canvas简单入门

Canvas简单入门 创建canvas至少需要提供width和height属性,才能通知浏览器需要多大位置画图。标签内容是后备数据,浏览器不支持canvas元素时显示。...(单位是像素,但是传参时不需要传单位) fillRect strokeRect clearRect fillRect:绘制并填充矩形 fillRect:以指定颜色画布绘制并填充矩形,填充色使用fillStyle...clearRect:擦除画布某个区域,把擦除区域变透明。...所以需要使用beginPath创建新路径,新路径还是会有没有设置moveTo时,这个位置并不是(0, 0),而是空问题,所以需要使用moveTo设置位置 const mycanvas = document.getElementById...) { const context = mycanvas.getContext("2d"); // 获取图像 const img = document.images[0]; // 画布坐标出绘制图像

1.5K20

HTML5中Canvas元素使用总结 原

上面的绘制图形方法实际上是一个复合函数,其完成了路径定义和绘制两步。...beginPath函数用来开启一个路径,moveTo函数用于将画笔移动到某个点,lineTo函数用来定义一条线,线起点为当前画笔所在位置,参数为终点位置。...其中sx,sy和sw,sh用来对原图像进行裁剪,只选择图像中部分进行绘制,x,y,w,h设置绘制画布坐标和尺寸。    ...3.绘制属性设置     绘制过程中,开发者可以对绘制线条颜色,填充颜色,风格,阴影等进行设置。...4.进行画布转换     画布也可以进行一些简单变换操作,例如旋转,缩放等等。需要注意,对画布操作不会影响到已经绘制画布内容,之后绘制内容会受到影响。

1.8K10

Canvas入门到高级详解(中)

案例 16 缩放案例.html 3.3.2 位移画布(重点) ctx.translate(x,y) 方法重新映射画布 (0,0) 位置 参数说明: x: 添加到水平坐标(x)上值 y:...添加到垂直坐标(y)上值 发生位移后,相当于把画布 0,0 坐标 更换到新 x,y 位置,所有绘制新元素都被影响。...ctx.restore() 返回之前保存过路径状态和属性 获取最近缓存 ctx 一般配合位移画布使用。...3.5 画布限定区域绘制(了解) ctx.clip(); 方法从原始画布中剪切任意形状和尺寸 一旦剪切了某个区域,则所有之后绘图都会被限制在被剪切区域内(不能访问画布其他区域) 一般配合绘制环境保存和还原...image 3.11 了解判断点是否路径中(知道有) context.isPointInPath(x,y); //isPointInPath() 方法返回 true,如果指定点位于当前路径中;否则返回

1.8K30

Android中各种Drawable类详解

你需要为位图指定绘制画布位置以及缩放到区域方式: //这里android.view.Gravity参考值。...也就是会对绘制位置和长度进行放大缩小。 比如设置某个位置为(10,10)如果缩放为2则是(20,20)。...这样当调用对象setLevel方法指定一个级别时则只有这个级别所在区域Drawable对象才会显示。 这种类实用场景在哪里呢? 这个类相当是特定level下只显示某个子可绘制对象。...(float x, float y) 我们还可以设置画布某个特殊形状下渐变 public void setShape(int shape) 系统可支持如下形状: RECTANGLE:...我们也可以把一个Piture对象内容绘制到其他画布中去: public void draw(Canvas canvas) //绘制某个画布去 PictureDrawable类draw实现就是将绘制工作委托给了

1.5K20

Canvas 绘图技术:如何实现签名板签名功能以及导出图片

二、Canvas 绘制签名板步骤 实现将签名版上签名并导出为图片功能之前,我们先想一想如何在 Canvas 上绘制签名版。...当鼠标按下时,会将 drawing 变量设置为 true,表示开始绘制。然后使用 ctx.beginPath() 方法开始一个新路径,以便绘制线条。...当鼠标移动时,如果 drawing 变量值为 false,则表示当前没有绘制,直接返回。...如果 drawing 变量值为 true,则表示正在绘制,使用 ctx.lineTo() 方法将画笔移动到鼠标移动位置,然后使用 ctx.stroke() 方法绘制路径。...,鼠标松开时结束绘制效果,下面是我效果图,哈哈哈,有一点小丑。

40142

vue使用canvas签名之PC端

需求 一些项目业务中,经常会使用到画板,让用户自己去写/画一些东西做标示,比如说在线签电子合约、签名等,如果不用插件,那么如何使用h5canvas画布来实现这一需求呢?...mousedown 鼠标按下,需要做: 获取鼠标做画布位置 存为一个点坐标(起始点) 以起始点建立一个路径 开启画布操作 mousemove 鼠标移动时,又要做哪些准备呢?...判断是否开启画布操作,如果没开启我们当然不能鼠标画布上移动就给绘制吧,因此先判断是否当前状态可绘制 获取鼠标做画布位置 上一个点到这一个点作连线 绘制出来 当前点存储,下一次用 可能此处有些迷,大概意思就是...,鼠标不停运动,某一时刻鼠标的位置A(x,y),在下一时刻A则会变成上一个位置,我们思路无非是不断绘制出鼠标上一个时刻到当前时刻路径而已。...)坐标 this.ctx.moveTo(this.point.x, this.point.y); // 把路径移动到画布指定点,不创建线条(起始点)

1.4K10

Canvas

填充 绘制路径时候可以不关闭路径(不设置closePath()),这个时候会实现自封闭现象(只针对fill功能) 2.3 绘制圆弧 arc(x, y, radius, startAngle,...} 关于参数问题(不包含image) 2个参数,表示绘制图片位置 4个参数,前两个参数表示绘制位置,后面2个表示图片尺寸 8个参数,前2个参数描述切片位置,接下来2个是切片尺寸,接下来2...个是切下来图片放到什么位置,最后2个是图片大小 ctx.drawImage(image,0,0,200,200,0,50,90,90); 这个意思是(0,0)位置用一个200 * 200切片从图片上切下一块图片...,放到(0,50)位置,最后把图片大小缩放为90*90 4.1 资源管理器 代码就不放了 5.1 变形 canvas是可以进行变形,变形不是元素,而是整个画布渲染区域变形 **save...source-out 只有和已有图形不重叠地方才绘制新图形 source-atop 只有新图形和已有内容重叠地方才绘制新图形 destination-in 新图形以及已有画布重叠地方,已有内容都保留

1.2K20

网页|HTML5 也可以画一画(canvas)

canvas意为画布,现实生活中用它来作画,HTML5中canvas与之类似,可以称它为“网页中画布”,有了这个画布便可以轻松在网页中绘制图形、文字、图片等。...lineTo()方法用于定义从“x,y”位置绘制一条直线到起点或上一个线头点。...context.lineTo(x,y); (5)路径 绘制直线确定了起始点和线头点后,便形成了一条绘制路径,但如果要绘制复杂路径,就必须要有路径开始和结束。...canvas图形绘制中,路径只是草稿,真正绘制线必须执行stroke()方法根据路径进行描边和使用fill()方法进行图形填充。...fillText(text,x,y)来定义 canvas 上绘制实心文本,或者使用strokeText(text,x,y) 来定义 canvas上绘制空心文本。

2.3K20
领券