html5垂直线怎么画,HTML5 Canvas画线技巧
正统的HTML5 Canvas中如下代码
复制代码代码如下:
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(10, 100);
ctx.lineTo(300,100);
ctx.stroke();
运行结果绘制出来的并不是一个像素宽度的线
感觉怎么好粗啊,跟常常见到的网页版各种绘制线效果
很不一样,难道HTML5 Canvas就没想到搞好点嘛
其实这个根本原因在于Canvas的绘制不是从中间开始的
而是从0~1,不是从0.5~1 + 0~0.5的绘制方式,所以
导致fade在边缘,看上去线很宽。
解决方法有两个,一个是错位覆盖法,另外一种是中心
平移(0.5,0.5)。实现代码如下:
错位覆盖法我已经包装成一个原始context的函数
复制代码代码如下:
/**
*
draw one pixel line
* @param fromX
* @param formY
* @param toX
* @param toY
* @param backgroundColor - default is white
* @param vertical - boolean
*/
CanvasRenderingContext2D.prototype.onePixelLineTo = function(fromX, fromY, toX, toY, backgroundColor, vertical) {
var currentStrokeStyle = this.strokeStyle;
this.beginPath();
this.moveTo(fromX, fromY);
this.lineTo(toX, toY);
this.closePath();
this.lineWidth=2;
this.stroke();
this.beginPath();
if(vertical) {
this.moveTo(fromX+1, fromY);
this.lineTo(toX+1, toY);
} else {
this.moveTo(fromX, fromY+1);
this.lineTo(toX, toY+1);
}
this.closePath();
this.lineWidth=2;
this.strokeStyle=backgroundColor;
this.stroke();
this.strokeStyle = currentStrokeStyle;
};
中心平移法代码如下:
复制代码代码如下:
ctx.save();
ctx.translate(0.5,0.5);
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(10, 100);
ctx.lineTo(300,100);
ctx.stroke();
ctx.restore();
要特别注意确保你的所有坐标点是整数,否则HTML5会自动实现边缘反锯齿
又导致你的一个像素直线看上去变粗了。
运行效果:
现在效果怎么样,这个就是HTML5 Canvas画线的一个小技巧
觉得不错请顶一下。
html5垂直线怎么画,HTML5 Canvas画线技巧相关推荐
- 用HTML5图形拼成的画房子,canvas画小房子(补充:简陋的小房子)
小房子 #cvs{ background:pink; } 您的浏览器不支持canvas标签! var canvas=document.getElementById("cvs"); ...
- html5绘制随机五角星_html5 canvas画五角星(随机生成)
五角星的格定点坐标该如何定位?原理图如下: 源代码: function canvs_start(){ var c = document.getElementById("star") ...
- 毛边效果 html,Html5中Canvas画线有毛边如何解决
Html5 Canvas 所有的画线指令画出来的线条都有毛边(比如 lineTo, arcTo,strokeRect),这是因为在Canvas中整数坐标值对应的位置恰巧是屏幕象素点中间的夹缝,那么当按 ...
- HTML5 Canvas 画虚线组件
前段时间由于项目需要,用到了HTML5 Canvas画图,但是没有画虚线的方法,自己写了一个HTML5 画虚线的组件. dashedLine.js 1 if (window.CanvasRenderi ...
- html5画直线箭头,HTML5 canvas画带箭头的虚线
今天给大家讲解的是在HTML5 canvas画带箭头的虚线.关于Canvas 对象表示一个 HTML 画布元素 -.它没有自己的行为,但是定义了一个 API 支持脚本化客户端绘图操作. 本案例注意事项 ...
- html画布直线代码,图文详解如何用html5 canvas画一条直线
是HTML5 中新增的元素,它可以结合JavaScript脚本绘制出各种各样的图形,对于canvas你了解多少?你会用canvas画直线吗?这篇文章就和大家讲讲如何用canvas画一条直线,有一定的参 ...
- html5中怎么使用canvas画空心圆与实心圆
这篇文章主要介绍"html5中怎么使用canvas画空心圆与实心圆"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"html5中怎么 ...
- html5的canvas 画西瓜
这几天在学HTML5,练习canvas画了半个西瓜. 画的西瓜分为"瓜子","瓜肉","白瓜肉","瓜皮". 效果图: ...
- html 绘制正方形,HTML5之Canvas画正方形
HTML5之Canvas画正方形 1.设计源码 HTML5之Canvas画正方形 function drawFour(id) { //获取canvas元素 var canvas = document. ...
最新文章
- 2个byte类型数据相加(转型问题的分析)
- python htmltestrunner报告_Python HTMLTestRunner可视化报告实现过程解析
- 核密度估计python_非参数估计:核密度估计KDE
- 【渝粤教育】广东开放大学 计量经济学 形成性考核 (21)
- mysql的jar包文件在哪找_数据库的jar在哪找
- 为什么NaN - NaN == 0.0与英特尔C ++编译器?
- Objective-C中的属性机制
- css一行内容过多显示省略号
- 《css权威指南》笔记
- hdfs基本操作命令(完整)
- 数字逻辑电路试题及答案
- android shell强制删除文件夹_Windows 强制删除文件及文件夹命令
- (Research)肝肿瘤免疫微环境亚型和中性粒细胞异质性
- python去除字符串中的单词_从字符串中删除特定单词的最有效方法
- elementUI里面upload组件上传图片时选择图片之后不显示图片的问题,
- Dojo1.11官方教程文档翻译(3.5)动画
- iFit(R)带来健身突破:使用iFit ActivePulse™实现个人化的自动心率训练
- 秃顶路人的计算机系统大作业Hello
- HTML 动态背景
- android删除本地图片,Android之删除图库照片
热门文章
- 无心剑随感《译诗但求达意传神》
- 大数据学习笔记52:Flume Interceptors(Flume拦截器)
- python樱花树代码_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码
- 简述一下索引的匹配原则_【进阶之路】索引中一些易忽视的点
- python80行代码写一个文件整理软件
- mfc 更新服务器文件,MFC程序版本自动升级更新
- mysql查询时间出来数字_mysql查询时间出来数字的解决方法
- Win7下使用openssl时出现“Unable to write ‘random state’‘的问题
- pytorch 实现MLP(多层感知机)
- python交换两个值原理_python 两数交换新写法原理