我做的是在TRTC electron里面,有一个屏幕分享的功能,就只分享一个canvas画板出去,这就需要拿到整个屏幕中这个画板的起始坐标和宽高,从而获取到这个画板,如下图
坐标(x,y)就是这个画板在整个窗口的起始位置,然后知道画板的宽和高,就能拿到这个画板了,详情可参考canvas里的rect()方法,rect()详解
rect(x,y,w,h) :x,y就是起始坐标,w,h就是宽和高。 并且rect()可以动态设置坐标参数。
如果你也恰巧是要用TRTC electron,他的selectScreenCaptureTarget()方法中 屏幕分享的过程中 共享指定区域 rect() 规定的四个坐标是如下图 其中left和top坐标就相当于我之前说的坐标(x,y),相对于整个窗口的起始坐标,然后该元素的宽是用right坐标减去left坐标,高是用bottom坐标减去top坐标的。
所以关键就是怎么拿到坐标(x,y),这就可以用到几个方法:
1、比较蠢得是:拿截图软件截图的时候,上面会有尺寸,这个可以用做粗略的计算。 2、在js中,通过document.getElementById(‘div’).offsetLeft,可以计算计算页面元素的offset,距离上面的高度就是offsetTop。
offset() 方法返回或设置匹配元素相对于文档的偏移(位置)。
3、还有一个最简单和无bug的方法:getBoundingClientRect 它用于获取某个元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性。
使用方法:
rectObject = object.getBoundingClientRect(); rectObject.top:元素上边到视窗上边的距离;