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

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

文章目录 一、在 Canvas 画布绘制箭头图形 - 要点分析 1、数据准备 2、绘制直线 3、绘制箭头尾翼 二、代码示例 一、在 Canvas 画布绘制箭头图形 - 要点分析 ---- 1、数据准备...; 然后 , 计算出起始点到终止点角度 , deltaY / deltaX 是该角度正切 , 已知正切值 , 计算角度 , 使用 Math.atan2 函数即可 , 最终计算角度是 该直线 与 x...根据该长度 , 确定箭头终点坐标 ; 下图中蓝色箭头 , 就是计算出箭头尾部相对于起始点增量 ; // 设置箭头终点在直线位置 , 根据比例计算出箭头长度 arrowLength..., 箭头位置 ; 尾翼起始点 arrowEndX, arrowEndY , 终止点需要根据角度计算出来 ; // 绘制箭头 尾翼 线段 , 直线角度 增减 45 度 , 即可获得尾翼角度...// 返回是 这条直线 与 x 轴夹角 // deltaY / deltaX 是该角度正切 // 已知正切值 , 计算角度 , 使用 Math.atan2 函数即可

1.4K20

SVG与foreignObject元素

SVG与foreignObject元素 可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维矢量图形。...SVG SVG是可缩放矢量图形Scalable Vector Graphics缩写,其是一种用于描述二维矢量图形XML可扩展标记语言标准,与基于像素图像格式(如JPEG和PNG)不同,SVG使用数学方程和几何描述来定义图像...SVG图形可以使用文本编辑器手动创建,也可以使用专业矢量图形编辑软件生成,其可以在Web页面上直接嵌入,也可以通过CSS样式表和JavaScript进行控制和交互,由于SVG图形是基于矢量,因此在放大或缩小时不会失去清晰度...此外SVGtext元素支持一些基本文字样式属性,如字体大小、颜色、字体粗细等,然而相对于CSS提供丰富样式选项,SVG文字样式相对有限,例如无法直接设置文字阴影、文字间距等效果等。...foreignObject>元素允许在SVG文档嵌入HTML、XML或其他非SVG命名空间内容,也就是说我们可以直接在SVG嵌入HTML,借助HTML能力来展示我们元素,例如上边这个例子,我们就可以将其改造为如下形式

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

前端进阶|在手机上画一条1px细线,为什么这么难?

数学中有个概念:线是没有宽度,点是没有大小。像素同样是没有大小。 2倍屏物理像素密度是普通屏两倍,并不是每一个物理像素大小是普通屏1/4,而是物理像素间距是普通屏间距1/2。...SVG方案 SVG指的是矢量图,具体在代码,会作为xml标签组装在html文件。...关键地方是,使用svg标记视口大小和使用rect标记矩形大小是相同。...stroke-width画线并不是对应cssborder-width,而更像是不占空间outline。...因为不占空间,它会以图形边界为中心画线,一条线一半宽度在矩形内,一半在矩形外。而视口大小正好就是矩形大小,看到线宽就只有一半了。

85710

手把手带你上手D3.js数据可视化系列(一)手把手带你上手D3.js数据可视化系列(一)

用 D3.js 进行可视化,可以用矢量 SVG,也可以用标量图、像素canvas,因为古柳 SVG 用多些,这里就以此为例。...画布设置好后,就可以往里面添加视觉元素了,就像很多工具/软件都自带一些基本图形元素一样,SVG 也有 circle/rect/ellipse/polygon/line/path/text 等常用元素,并且每个元素可以设置相应属性...x 坐标的计算公式是 20 + d * 70,这里希望每一行最后一个矩形整体都在画布内,即 x 坐标加上矩形宽度要小于画布宽度。...也许可以缩小矩形宽高,然后调节间距一步步搞定。...宽高和间距,然后自动布局呢?

4.2K20

基于 HTML5 WebGL 低碳工业园区监控系统

矢量图片通过点、线和多边形来描述图形,因此在无限放大和缩小图片情况下依然能保持一致精确度。...rect.height); } 眼尖同学应该已经注意到了,我没有写出 create3D 函数声明,就展示效果而言,这个方法只是将场景 json 图纸反序列化到 3D 场景,并追加了一个对象 info...'shape3d.autorotate': true,// 始终面向相机 'shape3d.vector.dynamic': true,// 设置矢量图形 '3d.visible...这个时候矢量图标的优势又多了一个,通过对矢量图标某个部分进行数据绑定进行数据动态变化,这边我三言两语也讲不完整,我就简单提一下如何实现,剩下可以去官网数据绑定手册查阅相关资料和具体实现。...也就是说如果 HT 没有定义我们需要属性或者说一个矢量图上有多个相同属性需要更改为不同值,就可以通过 attr 来自定义属性,这里我用就是这个方法: "text": { "func":

99770

D3.js库-5-做一个简单图形

D3.js库-5-做一个简单图形 本文中介绍利用一组简单数据制作一个条形图,先看效果: ? 画布 在HTML中使用画布有两种:SVG和Canvas,在D3使用是SVG。...SVG SVG,指可缩放矢量图形(Scalable Vector Graphics),是用于描述二维矢量图形一种图形格式,是由万维网联盟制定开放标准。 SVG 使用 XML 格式来定义图形。...SVG几个特点 SVG绘制矢量图,对图像进行放大后不会失真 基于XML,可以为每个元素添加JS事件处理 每个图形是对象,更改对象属性,图形也会改变 Canvas Canvas...使用D3在body元素添加svg画布代码如下: \color{red}{此段代码常用,须记住} // D3定义画布svg,设置宽高 const width = 300;....attr("height", height) 绘制矩形 rect 在SVG,矩形元素标签是rect

6.8K20

SVG基础

SVG基础 SVG可缩放矢量图形Scalable Vector Graphics是基于可扩展标记语言XML,用于描述二维矢量图形一种图形格式。...SVG严格遵从XML语法,并用文本格式描述性语言来描述图像内容,因此是一种和图像分辨率无关矢量图形格式,SVG于2003年成为W3C推荐标准。 示例 用来创建一个矩形,通过x与y来定义距离左边框与距离上边框位置,width与height定义宽度与高度,style可以直接声明属性样式,stroke和stroke-width属性控制形状轮廓颜色与宽度...文本独立 SVG图像文字独立于图像,文字保留可编辑和可搜寻的状态。也不会再有字体限制,用户系统即使没有安装某一字体,也会看到和他们制作时完全相同画面。

2.3K20

手把手带你上手D3.js数据可视化系列(二)手把手带你上手D3.js数据可视化系列(二)

文章最后留下一个疑问,就是能否基于数据集大小和画布大小来自动计算出每个rect宽高和间距,然后自动布局? 正好古柳之前啃大西洋手抄本可视化作品源码时看到了相关实现方法,这里就和大家分享下。...接着计算出矩形之间空白间距。...totalMargin 就是左边+右边或者上边+下边间距,也就是 halfMargin 2倍。...= 整体宽度 * 整体宽度 = (rectWidth + totalMargin) * (1.5 * rectWidth + totalMargin),原始面积公式应该如下,而源码里似乎采用了近似后计算公式...'rect'),并且采用取余取整操作,计算出每个矩形x/y坐标值,和上一票最后调整布局换行显示都类似,应该无需过多解释了。

3K10

网络图形标准

下面会就这几种标准做一个介绍: VML Vector Markup Language(矢量标记语言)是一种 XML 语言,用于绘制矢量图形。...:0;top:0;width:100;height:50" fillcolor="blue" stroked="f"/> 上面 xmlns:v 指的是 VML 命名空间...SVG 可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形一种图形格式。SVG 由 W3C 制定,是一个开放标准。...值得一提是,当前 SVG 和 VML 在浏览器支持度不同,使得诸多前端矢量图形库针对 IE 和非 IE 做了两套实现,保证在 IE 下用 VML 渲染,而其他浏览器则用 VML 渲染,而对于 Canvas...但是由于 HTML5 API 带来互补特性,我们会看到越来越多矢量图形库借由其对页面图形渲染支持,比如它。 最后,是不是不使用这样网络图形标准就不能再网页上绘图了?当然不是!

70800

SVG学习笔记,持续记录。

SVG是一种用XML定义语言,用来描述二维矢量矢量/栅格图形。...SVG提供了3种类型图形对象:矢量图形(vectorgraphicshape,例如:由直线和曲线组成路径)、图像(image)、文本(text)。...SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络基于矢量图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸情况下其图形质量不会有所损失...2.重新声明默认命名空间 在另一个命名空间内重新定义默认命名空间。...当SVG文档被渲染时候,这2个元素不会被渲染到图形。这个2个元素之间差别不是太大,title在有些实现是作为提示信息出现,所以通常title是放到父元素第一个位置上。

2.5K40

HT全矢量图形组件设计

/res/sunrise.png’)方式注册url路径,但当注册对象是HT矢量格式标准JSON数据时,则HT会采用该JSON描述矢量信息进行图形绘制,上图JSON其实仅是左侧图片描述,右侧红色四个...至此仅可以说重造了个SVG轮子没啥特殊,如果仅能达到矢量功能,那费那么大劲自定义一套标准也没大意义,其实HT for Web设置矢量初衷并非为了矢量化,而是HT产品核心理念:让程序员更轻松开发图形界面...当然HT作为程序员开发工具,仅仅走到这一步还是远远不够,这仅仅解决了绘制矢量工作,对于SCADA等监控领域往往还需要根据后台实时数据上报硬件信息,需要图形矢量同步变化,因此矢量图形颜色、大小...按传统做法,程序员不仅要绘制矢量,并且在绘制图形代码还要掺杂业务参数逻辑,因此代码可读性和可维护性是很难想象。...这里HT又创新性提出了动态绑定矢量数据功能,HT矢量格式设计从骨子里头就考虑了动态绑定数据需求,HT矢量JSON格式,任何图形元素颜色、大小、角度等所有参数都可以动态绑定业务数据,例如上图水泵扇叶

1.4K90

矢量HTML5拓扑图形组件设计

/res/sunrise.png')方式注册url路径,但当注册对象是HT矢量格式标准JSON数据时,则HT会采用该JSON描述矢量信息进行图形绘制,上图JSON其实仅是左侧图片描述,右侧红色四个...至此仅可以说重造了个SVG轮子没啥特殊,如果仅能达到矢量功能,那费那么大劲自定义一套标准也没大意义,其实HT for Web设置矢量初衷并非为了矢量化,而是HT产品核心理念:让程序员更轻松开发图形界面...当然HT作为程序员开发工具,仅仅走到这一步还是远远不够,这仅仅解决了绘制矢量工作,对于SCADA等监控领域往往还需要根据后台实时数据上报硬件信息,需要图形矢量同步变化,因此矢量图形颜色、大小...按传统做法,程序员不仅要绘制矢量,并且在绘制图形代码还要掺杂业务参数逻辑,因此代码可读性和可维护性是很难想象。...这里HT又创新性提出了动态绑定矢量数据功能,HT矢量格式设计从骨子里头就考虑了动态绑定数据需求,HT矢量JSON格式,任何图形元素颜色、大小、角度等所有参数都可以动态绑定业务数据,例如上图水泵扇叶

1.4K20

Power BI图表新高度:像素与矢量图形组合

矢量图形基于坐标和形状,图像可以无限放大且不失真。在不同可视化场景,Power BI像素图形矢量图形都会用到。...下图表格,产品图片使用了像素图形,放置在条件格式图标,条形图、气泡图使用SVG矢量图绘制。...像素图形+基本矢量图形 ---- 首先看一个最简单叠加,还是上图产品销售排行榜,我们可以给毛利贡献为负数产品照片打上红框,此处产品照片是像素图形,红框是矢量图形。...但是叠加矢量图形使用时,目前(截止2023年8月)不支持URL,仅支持BASE64编码,也就是说上方代码产品图片需要是: "data:image/svg+xml;utf8, ...像素图形+像素图形+矢量图形 ---- 如下图表展示了某产品在不同门店库存情况。地图是像素图形充当背景,产品图片也是像素图形,数据标签是矢量图形

20010

HT图形组件设计之道(一)

,慢慢实现了几个有意义里程碑,慢慢积累下了不少图形组件设计上创新和经验,我不知道这个系列会写多少篇,也许永远也不会结束,也没有系统提纲规划,想到什么就写什么,只希望文章能启发有兴趣同学对图形组件设计更深思考就足够了...实现最终效果如上图所示,模型数据就两个数值,一个代表CPU占用率,一个代表内存占用率,左侧通过HT图形组件GraphView自定义了矢量图形展示,右上角自定义了属性页PropertyView两单元格...this.setLeftBackground(getColor(value)); }, value: node.a('mem')         } }], [50, 0.1]); GraphView部分采用了《HT全矢量图形组件设计...》文章介绍HT自定义矢量方式来实现图形效果,这种方式介于以上两种扩展方式之间,需要自定义绘制效果,但通过HT提供矢量格式,用户可采用较为直观易读JSON格式来描述图形,并通过数据绑定方式实现模型数据与界面呈现关联...('server_image'); node.a({ cpu: 30, mem: 70 }); dataModel.add(node); 当然实际应用并不需要拉条改变CPU和MEN值,这些值一般通过后台采集实时自动更新仅作为呈现

62750

HTML5拓扑图形组件设计之道(一)

,慢慢实现了几个有意义里程碑,慢慢积累下了不少图形组件设计上创新和经验,我不知道这个系列会写多少篇,也许永远也不会结束,也没有系统提纲规划,想到什么就写什么,只希望文章能启发有兴趣同学对图形组件设计更深思考就足够了...实现最终效果如上图所示,模型数据就两个数值,一个代表CPU占用率,一个代表内存占用率,左侧通过HT图形组件GraphView自定义了矢量图形展示,右上角自定义了属性页PropertyView两单元格...this.setLeftBackground(getColor(value)); }, value: node.a('mem') } }], [50, 0.1]); GraphView部分采用了《HT全矢量图形组件设计...》文章介绍HT自定义矢量方式来实现图形效果,这种方式介于以上两种扩展方式之间,需要自定义绘制效果,但通过HT提供矢量格式,用户可采用较为直观易读JSON格式来描述图形,并通过数据绑定方式实现模型数据与界面呈现关联...('server_image'); node.a({ cpu: 30, mem: 70 }); dataModel.add(node); 当然实际应用并不需要拉条改变CPU和MEN值,这些值一般通过后台采集实时自动更新仅作为呈现

1K90

HT图形组件设计之道(一)

,慢慢实现了几个有意义里程碑,慢慢积累下了不少图形组件设计上创新和经验,我不知道这个系列会写多少篇,也许永远也不会结束,也没有系统提纲规划,想到什么就写什么,只希望文章能启发有兴趣同学对图形组件设计更深思考就足够了...实现最终效果如上图所示,模型数据就两个数值,一个代表CPU占用率,一个代表内存占用率,左侧通过HT图形组件GraphView自定义了矢量图形展示,右上角自定义了属性页PropertyView两单元格...getColor(value)); }, value: node.a('mem') } }], [50, 0.1]); GraphView部分采用了《HT全矢量图形组件设计...》文章介绍HT自定义矢量方式来实现图形效果,这种方式介于以上两种扩展方式之间,需要自定义绘制效果,但通过HT提供矢量格式,用户可采用较为直观易读JSON格式来描述图形,并通过数据绑定方式实现模型数据与界面呈现关联...('server_image'); node.a({ cpu: 30, mem: 70 }); dataModel.add(node); 当然实际应用并不需要拉条改变CPU和MEN值,

84550
领券