资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

html5矩形,css 矩形

html5 canvas键盘左右移动矩形的问题

加入一个间隔30ms(举个例子,可以根据实际情况修改)的定时器,

创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站建设、做网站,塑造企业网络形象打造互联网企业效应。

当你按下某个键(以左键为例),修改一个全局量bLeftDown=true;

定时器中检测bLeftDown,当bLeftDown时,执行 x-=1  操作,

当你松开某个按键的时候,修改一个全局量bLeftDown=false;

这样就可以比较流畅的移动矩形了

我的空战游戏就是这么做的,效果很好

var VK_UP = 38;var VK_DOWN = 40;var VK_RIGHT = 39;var VK_LEFT = 37;

var VK_A = 65;

document.onkeydown = function(event){

//这个函数处理按键按下事件

if (event.keyCode == VK_A || event.keyCode == VK_LEFT  !bLeftDown)        {             bLeftDown = true;        }

//....其他判断

}document.onkeyup = function(event){

//这个函数处理按键松开事件

//类似处理,省略

}

html5 canvas在img标签的图片上绘制矩形框、矩形框为1px时线条模糊问题

前端需要在后端返回的图片集合里,根据提供的对角线坐标绘制矩形。矩形可能是多个。效果达到如下:

1、根据后端返回的图片list,生成canvas画布,

2、把图片画到canvas里面,再根据后端返回的坐标,在canvas里画矩形框。

此项目中,后端返回的坐标是基于缩略图的,但是前端渲染在页面上的图片,会按宽为788px来显示,所以坐标应该要按照比例来算。

真实的左上x点的计算方式为:真实宽 / 压缩宽 * 压缩x点

①画矩形时,如果里面的参数有不是整数的话,容易导致边框粗细不一等问题。

②当矩形的边框lineWidth设置为1px时候,会出现线条模糊的问题。

关于第②个问题的延申:

这是测试提给我的bug:

我的思路存在的问题:

首先,同样是矩形的边框我同样设置的都是1px,不应该有的线条颜色深,有的颜色淡啊,排除了参数没有取整的问题后,我怀疑了颜色red在画布上的渲染问题,换成十六进制的同样有问题。就在我一筹莫展的时候,我叫来了小伙伴,我说你看这线条颜色是不是不一样,我开始怀疑我的眼神有问题。小伙伴说,你给线条整粗点看看这问题明显吗。我把边框线条设置了2px,发现和1px的粗细是一样的,并且颜色一样了线条不模糊了。换成别的宽度,只要不是1px都没有问题了。

思维的问题在于,我百度问题的描述有问题,我之前一直搜canvas绘制矩形线条深浅不一,我应该搜canvas矩形线条模糊。我排查问题的时候,固定思维模式觉得1px写的没错,却没有尝试排查。

关于这个问题的详细解答与解决办法:

canvas1px线条模糊

我的理解

canvas的线条画法不一样,canvas的每条线都有一条无限细的“中线”,线条的宽度是从中线向两侧延伸的,也就是说canvas绘制1px的时候,是中线向左右两边延申各取0.5,并不是向某一边延申(如果只是往右延申就不再是问题了),此时问题出现了,计算机不允许出现小于1px的图形,所以他做了一个折中的事:把这两个像素都绘制了。所以,如此一来,本来1px的线条,就成了看起来2px宽的线条。

延申:

HTML 5 Canvas详细讲解 ———— 第二篇(清除canvas画布上指定区域+橡皮擦功能实现;在画布上平铺指定图片;在画布上绘制文本;总结案例之刮刮乐功能实现)

HTML5中Canvas rect,strokeRect 和 fillRect 的区别

canvas问题

:

canvas

rect:(x,y,width,height)此处为定义矩形路径

,具体可以当做简便创建矩形来使用。

canvas

strokeRect:(同上),用来创建矩形框;

canvas

fillRect

:(同上),填充一块矩形区域。


当前文章:html5矩形,css 矩形
网站URL:http://www.cdkjz.cn/article/hosccc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220