初涉几何画板,常常会为坐标系中刻度的大小、位置,是否有文本、文本能否随自己心意设置而烦恼,那么怎么更改它们呢,不要急,随我一起来看看。
1、我们以迷你坐标系中的无参版石岩坐标为例。在 自定义工具 中我们找到它。
2、选择后鼠标变为该 坐标模式 ,在画布合适的位置点击一下,该坐标就出现在画布上。
注意: 此时该工具处于被选择状态,所以,如果再次单击鼠标,会出现第二个坐标系。因此,如果不想出现该状况,我们要 换回选择/移动工具。
3、现在进入正题。首先我们看一看如何更改文本数值。坐标轴上的数值,一般是按0、1、2、……这样以1进位,如果我们想显示数值为偶数,或者以5、10进位,该怎样设置呢?更改的关键坐标轴下方的两个小绿点上:看, 图中我移动了左侧的小绿点,y轴的数值随之改变。 那么,不用说,右侧的小绿点就是更改x轴的数值的控制点了。明白了道理,就会觉得很简单吧,呵呵。
4、那么如何更改文本的字体呢。
首先,在显示菜单中,我们选择显示文本工具栏。该 工具栏 会出现在下方,但是,此时选择坐标轴上的文本, 工具栏是灰色不可编辑状态 。因此,我们要选择与坐标轴相关的编辑文本,点击后坐标轴会多现两个红色数值,此时再点击任一文本, 工具栏即为可编辑状态, 在此可进行字体、字号等更改。完成后再次单击编辑文本,多出的两个数值会消失,当然, 也可以单独选择该数值, 右键隐藏文本。
5、刻度如何更改呢? 看到轴上的小绿点吗,呵呵,还是这些绿点,每一个设置都有它专门的作用哦, 将x轴的绿点向外拉拉 ,看到吗?刻度的位置变换哦。
6、至于每个轴两端的绿点则对数轴的延长了,当然数值也会相应增加。
7、最后,设置完成了,不要忘记隐藏这些绿点。
注意: 其他坐标第更改位置略有不同,比如蚂蚁坐标系,多数设置是在左下方的控制台上,移动上面的点可以看到各项的变化。
canvas作为html中的一个标签,可以在网页上生成一块画布,其中,画布是网页的元素,但是画布上的东西不是,浏览器认为canvas是个,可以右键保存。
在这里插入描述
画布有默认的宽和高,是300150大小,画布的宽高不能通过style设置,只能通过canvas自己的属性设置。下面是一个基本画布的代码。
<style>
{
margin: 0;
padding: 0;
}
canvas {
border:1px solid black
}
</style>
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
<body>
<canvas width="600" height="800"></canvas>
</body>
1
2
3
1
2
3
画笔是通过js编写的,画布的横纵坐标如下所示
在这里插入描述
下面通过代码认识画笔。
let canvas = documentquerySelector('canvas') //获取画布元素
let ctx = canvasgetContext('2d') //创建画笔
consolelog(ctx); //可以看到画笔的属性
ctxmoveTo(100,100) //画笔的起始位置
ctxlineTo(200,200) //画笔的下一位置
ctxlineTo(100,200)
ctxfillStyle='red' // 图像填充颜色
ctxstrokeStyle = 'purple' // 线段颜色
ctxlineWidth = '10' //线段宽度
ctxfill() //展示属性
ctxclosePath() //闭合线段
ctxstroke() //绘制!!放到最后写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
二、canvas绘制矩形
let canvas = documentquerySelector('canvas')
let ctx = canvasgetContext('2d')
// 绘制矩形的第一种方法:描边矩形(矩形左上角的横坐标,矩形左上角的纵坐标,矩形长,矩形宽)
ctxstrokeRect(100,200,100,200)
// 第二种方法:填充矩形(参数含义相同) 默认黑色
ctxfillStyle = 'pink'
ctxfill()
ctxfillRect(300,200,100,200)
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
三、canvas绘制圆形
let canvas = documentquerySelector('canvas')
let ctx = canvasgetContext('2d')
// 绘制圆形
ctxbeginPath()
// 参数:x y r 起始弧度 结束弧度 是否逆时针绘制
// 对于弧度有个公示:360° = 2×PI
ctxarc(100,100,50,0,2MathPI,true)
ctxfillStyle = "red"
ctxfill()
ctxstroke()
// 绘制弧线
ctxbeginPath()
ctxarc(200,200,50,1,2,false)
ctxstroke()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
四、清除画布与绘制文字
let canvas = documentquerySelector('canvas')
let ctx = canvasgetContext('2d')
ctxfillRect(100,200,100,200)
// 清除画布
ctxclearRect(100,200,50,50)
// 绘制文字
ctxfont = "20px 微软雅黑"
ctxfillStyle = 'red'
ctxfill()
ctxfillText("绘制文字",50,20)
1
2
3
4
5
6
7
8
9
10
Canvas 组件提供两种方法让你指定或者获取画布对象: Item handles 、 tags 。
调用: Canvas(master=None, cnf={}, kw)
为 Canvas 组件中所有的画布对象添加 tag,该方法相当于 addtag(tag, "all") 。
为显示列表中 item 下方的画布对象添加 Tag,该方法相当于 addtag(tag, "below", item) ; item 可以是单个画布对象的 ID,也可以是某个 tag。
将 tag 添加到与给定(画布坐标系的)坐标 相临近的画布对象(该方法相当于 addtag(tag, "closet", x, y,halo=None, start=None) )。可选参数 halo 指定一个距离,表示以 为中心,该距离内的所有画布对象均添加 tag;可选参数 start 指定一个画布对象,该方法将为低于但最接近该对象的画布对象添加 tag。 [2]
为所有坐标在矩形 中的画布对象添加 tag,该方法相当于 addtag(tag, "enclosed", x0, y0, x1, y1) 。
跟 addtag_enclosed() 方法相似,不过该方法范围更广(即使画布对象只有一部分在矩形中也算),该方法相当于 addtag(tag, "overlapping", x0, y0, x1, y1) 。
为 item 参数指定的画布对象添加 tag ,该方法相当于 addtag(tag, "withtag", item) 。 item 参数如果指定一个 tag ,则为所有拥有此 tag 的画布对象添加新的 tag;item 参数如果指定一个画布对象,那么只为其添加 tag。
返回一个四元组 用于描述 args 指定的画布对象所在的矩形范围,如果 args 参数省略,则返回所有的画布对象所在的矩形范围。
将窗口坐标系的 X 坐标(screenx)转化为画布坐标系。如果提供 gridspacing 参数,则转换结果将为该参数的整数倍。
将窗口坐标系的 Y 坐标(screeny)转化为画布坐标系。如果提供 gridspacing 参数,则转换结果将为该参数的整数倍。
如果仅提供一个参数(画布对象),返回该画布对象的坐标 。可以通过 coords(item, x1, y1, x2, y2) 来移动画布对象。
删除 item 中从 from 到 to (包含)参数中的字符串。 item 可以是单个画布对象的 ID,也可以是某个 tag。
删除 item 参数指定的画布对象。如果不存在 item 指定的画布对象,并不会产生错误; item 可以是单个画布对象的 ID,也可以是某个 tag。
在 item 参数指定的画布对象中删除指定的 tag。如果 tag 参数被忽略,则删除指定画布对象所有的tags;如果不存在 item 指定的画布对象,并不会产生错误。item 可以是单个画布对象的 ID,也可以是某个 tag。
返回在 item 参数指定的画布对象之上的 ID。如果有多个画布对象符合要求,那么返回最顶端的那个;如果 item 参数指定的是最顶层的画布对象,那么返回一个空元组。item 可以是单个画布对象的 ID,也可以是某个tag。
返回 Canvas 组件上所有的画布对象。返回格式是一个元组,包含所有画布对象的 ID。按照显示列表的顺序返回。该方法相当于 find_withtag('all') 。
返回在 item 参数指定的画布对象之下的 ID。如果有多个画布对象符合要求,那么返回最底端的那个。如果 item 参数指定的是最底层的画布对象,那么返回一个空元组。item 可以是单个画布对象的 ID,也可以是某个 tag。
返回一个元组,包含所有靠近点(x, y)的画布对象的ID。如果没有符合的画布对象,则返回一个空元组。可选参数 halo 用于增加点(x, y)的辐射范围。可选参数 start 指定一个画布对象,该方法仅返回在显示列表中低于但最接近的一个 ID。注意,点(x, y)的坐标是采用画布坐标系来表示。
返回完全包含在限定矩形内所有画布对象的 ID。
返回所有与限定矩形有重叠的画布对象的 ID(也包含在限定矩形内的画布对象)
返回 item 指定的所有画布对象的 ID。item 可以是单个画布对象的 ID,也可以是某个tag
将焦点移动到指定的 item。如果有多个画布对象匹配,则将焦点移动到显示列表中第一个可以接受光标输入的画布对象。item 可以是单个画布对象的 ID,也可以是某个tag
返回与 item 相关联的所有 tags。item 可以是单个画布对象的 ID,也可以是某个 tag
将光标移动到 item 指定的画布对象。这里要求 item 指定的画布对象支持文本输入和转移焦点。 item 可以是单个画布对象的 ID,也可以是某个tag
返回 index 在指定 item 中的位置(沿用 Python 的惯例:0 表示第一)。index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 "@x, y" (x 和 y 是画布坐标系)来获得与此坐标最接近的位置。item 可以是单个画布对象的 ID,也可以是某个 tag
在允许进行文本编辑的画布对象的指定位置插入文本。index 参数可以是:INSERT(当前光标的位置),END(最后一个字符的位置),SEL_FIRST(当前选中文本的起始位置),SEL_LAST(当前选中文本的结束位置),还可以使用格式为 "@x, y"(x 和 y 是画布坐标系)来获得与此坐标最接近的位置-- item 可以是单个画布对象的 ID,也可以是某个 tag
获得指定 item 的选项的当前值。item 可以是单个画布对象的 ID,也可以是某个 tag
修改指定 item 的选项的当前值-- item 可以是单个画布对象的 ID,也可以是某个 tag
跟 itemconfig() 一样
将指定画布对象移动到显示列表的顶部。item 可以是单个画布对象的 ID,也可以是某个tag。跟 tag_raise 一样
将指定画布对象移动到显示列表的底部。item 可以是单个画布对象的 ID,也可以是某个 tag。跟 tag_lower 一样
将 item 移动到新位置(x, y)。item 可以是单个画布对象的 ID,也可以是某个 tag。
将 Canvas 的当前内容封装成 PostScript格式( 什么是 PostScript )表示
下方表格列举了各个 options 选项的具体含义:
缩放 item 指定的画布对象。xOrigin 和 yOrigin 决定要缩放的位置;xScale 和 yScale 决定缩放的比例;item 可以是单个画布对象的 ID,也可以是某个 tag。
注意:该方法无法缩放 Text 画布对象
可以看一个例子:
调整选中范围,使得给定的 index 参数指定的位置在范围内。item 可以是单个画布对象的 ID,也可以是某个 tag
取消 Canvas 组件中所有选中的范围
调整选中范围的起始位置为 index 参数指定的位置。item 可以是单个画布对象的 ID,也可以是某个 tag
范围在 Canvas 组件中当前文本的选中范围。如果没有则返回 None
调整选中范围的结束位置为 index 参数指定的位置
为 Canvas 组件上的画布对象绑定方法。event 参数是绑定的事件名称,callback 是与之关联的方法。item 可以是单个画布对象的 ID,也可以是某个Tag
注意:与绑定事件关联的是画布对象,而不是 Tag
将一个或多个画布对象移至底部。如果是多个画布对象,将它们都移至底部并保留原有顺序。item 可以是单个画布对象的 ID,也可以是某个Tag
注意:该方法对窗口组件无效,请使用 lower 代替
将一个或多个画布对象移至顶部-- 如果是多个画布对象,将它们都移至顶部并保留原有顺序。item 可以是单个画布对象的 ID,也可以是某个Tag
注意:该方法对窗口组件无效,请使用 lift 代替
解除与 item 绑定的事件。item 可以是单个画布对象的 ID,也可以是某个Tag
将指定画布对象移动到显示列表的顶部。item 可以是单个画布对象的 ID,也可以是某个Tag。跟 tag_raise 一样
返回指定画布对象的类型。返回值可以是:"arc", "bitmap","image", "line", "oval", "polygon","rectangle", "text", 或"window"
该方法用于在水平方向上滚动 Canvas 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体 *** 作参考:Scrollbar)
-- 如果第一个参数是 MOVETO,则第二个参数表示滚动到指定的位置:00 表示最左端,10 表示最右端
-- 如果第一个参数是 SCROLL,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 UNITS 或 PAGES),例如:xview(SCROLL,3, UNITS) 表示向右滚动三行
-- 跟 xview(MOVETO, fraction) 一样
跟 xview(SCROLL, number, what) 一样
该方法用于在垂直方向上滚动 Canvas 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体 *** 作参考:Scrollbar)-- 如果第一个参数是 MOVETO,则第二个参数表示滚动到指定的位置:00 表示最顶端,10 表示最底端-- 如果第一个参数是 SCROLL,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 UNITS 或 PAGES),例如:yview(SCROLL,3, PAGES) 表示向下滚动三页
跟 yview(MOVETO, fraction) 一样
跟 yview(SCROLL, number, what) 一样
使用tkinter中创建canvas时,会设置canvas的宽高。一般我们认为canvas中画图区域就是设置的宽高。其实这不太正确,canvas还有一个边框,如果不另外设置,真正的画图区域要减去边框。
比如我们容器的尺寸为width, height。然后在这个容器中添加一个唯一的canvas,canvas的尺寸设置为width, height,并且pack(expand=1, fill=both)。如果给这个canvas设置一个背景色,容器外部设置另外一个背景色,就可以看得到canvas四周有一条白色的边框。这在我们做窗口布置时,显得不太完美。改进方法其实很简单:
见下方 scan_mark(x, y)
使用这种方式来实现 Canvas 内容的滚动。需要将鼠标按钮事件及当前鼠标位置绑定到 scan_mark(x, y) 方法,然后再将 <motion> 事件及当前鼠标位置绑定到 scan_dragto(x,y,gain=10) 方法,就可以实现 Canvas 在当前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之间滚动
[TOC]
ECharts 自定义系列 profile - ECharts
希望将 ECharts 自定义系列官方提供的 profile 图表,横纵坐标进行转换。
encode 的作用是 映射 。
简单的说,就是从一个二维数组中,选择需要映射那几列数据到图表中。本例中,encode 从 datavalue 中映射数据。
数据映射,有两层意思。
画布的尺寸是有限的,也是是随界面布局的变化,时时相对发生变化。
图形(柱状图,折线图,饼图等等)在画布上的比例(相对尺寸)是一定的,那么一个具体的数值,在展现在图形上时,就需要按照一定的比例进行映射。
以本例为例,
画布大概只有 400600 px
x 轴,只有3个数据 (0,1,2)
y 轴,上的数据很多,是基于时间戳用随机数计算出来的(例如:1510975537362),科学计数法基本上都在 10e12 这个范围。
显然,不可能直接把数值 转化为像素,因此就需要知道 x 和 y 轴的 最大值 和
最小值 然后把每一个具体的值映射为屏幕中的像素值。
上面 encode 中,x 只选择 datavalue 中的第一列,也就是范围 0-2;y 轴选择 datavalue 中的第二、三列(即开始时间和结束时间范围)
在数值到画布坐标映射时,调用 apicoord([x, y]) 这个方法实现。本例中详见 series-customrenderItem 的说明
本例中,data 是由 echartsutileach(categories, function (category, index) 生成的。data 的完整结构如下:
xAxis 和 yAxis 的作用是绘制坐标轴。
在转置的时候,坐标轴需要配套转置。
renderItem 是数据映射过程中的关键,其作用好比 excel 中的数据透视表。不同的是,renderItem 需要把图形是什么样子的,定义清楚。
在本例中,我们需要对坐标轴进行转置,因此,在一开始的时候,修改了 series-customencode 中的映射行为。坐标轴对应的数据发生了修改,因此,在映射具体图形坐标的时候,需要配套修改。
这个方法用来获取一组坐标在画布中的坐标轴上对应的长度。这就好比获取地图比例尺的长度。返回值为一个数组,第一个元素对应x轴,第二个元素对应y轴
本例中,我们想知道转置以后,x轴一个单位的长度。
public void onDraw() {
Canvas canvas = mSurfaceHolderlockCanvas();
canvasdrawColor(ColorWHITE);
if (mSurfaceHolder == null || canvas == null) {
return;
}
/Paint xPaint = new Paint();
xPaintsetAntiAlias(true);
xPaintsetColor(ColorBLACK);
canvasdrawLine((screenWidth/2) ,0 , (screenWidth/2) , screenHeight , xPaint);
canvasdrawLine(0 ,(screenHeight/2) , screenWidth , (screenHeight/2) , xPaint);/
Paint mPaint = new Paint();
mPaintsetAntiAlias(true);
mPaintsetColor(ColorBLUE);
for(int i = 0;i < path1size() ;i++)
{
Node p = (Node) path1get(i);
if(0 == i)
canvasdrawCircle(pgetx()10, pgety()10, 2, mPaint);
else
{
Node p2 = (Node) path1get(i-1);
canvasdrawCircle((screenWidth/2)-pgetx(), (screenHeight/2)-pgety(), 2, mPaint);
//canvasdrawLine((screenWidth/2)-p2getx(), (screenHeight/2)-p2gety(), (screenWidth/2)-pgetx(), (screenHeight/2)-pgety() ,mPaint);
}
}
}
首先是声明一个Canvas 画布,然后调用DrawLine()函数就可以了。DrawLine()函数三个参数,第一个参数是起点,第二个是终点,第三个是颜色值。。。网上demo,自己可以去找找。
以上就是关于几何画板怎么设置坐标的刻度/大小/文本等属性全部的内容,包括:几何画板怎么设置坐标的刻度/大小/文本等属性、musiccanvas怎么用、Canvas 相关参数简介等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)