大家有没有画实心圆的算法?

2019-12-28 17:50发布

就是用LCD画一个实心圆~~不是空心的哦~~是实心,可以填充任意颜 {MOD}的~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
55条回答
love_ourdev
1楼-- · 2019-12-31 14:29
本帖最后由 love_ourdev 于 2013-8-31 21:46 编辑
senjet 发表于 2013-8-25 14:29
画椭圆和画圆之所以用画线而不是画点是为了连续性,如果以画点来写,就不一定连续了,有可能是虚点圆。事 ...


说的具体点就是:
假设设置左上角坐标的耗时为Ta,设置右下角坐标的耗时为Tb,传输一个像素值的耗时为Tc,
那么画n个像素的”水平线“和”垂直线“的函数可以优化为总时间Tall=(Ta+Tb+n*Tc),
而单独绘制n个像素的点所耗时间是:Tall=n*(Ta+Tb+Tc)。
请问你那个更耗时呢?
同样的道理,图像的块拷贝操作也是如此优化的,关键就是window的概念,现在的外部LCD控制器都有这个功能。
讨论问题你不能拿你以前的“成就”来压别人(言下之意就是你肯定正确,你是权威,你是至尊)。我更相信“三人行必有我师”。
adce
2楼-- · 2019-12-31 15:38
举个很常用的例子...SSD1963....

画一个点需要FSMC传送5次....x0 y0 x1 y1 color...也就是x0, y0, x0, y0, color
画一条线需要FSMC传送4+N次...x0 y0 x0 y1 color color color...N....
也就是点是一个像素的线....

SSD1963是可以设置从左到右 从右到左 从上到下 从下到上 逐行 隔行的自增方式的...
也就是在输出文字的时候其实是先读取x0 y0 x1 y1范围内的值 再更改 然后再写回...
也就是一个文字需要4 + width  * height * 2 完成一次字的读写...

SSD1963准确来说并没有点的概念和线的概念...所有的都是一个Rectangle...包括位图和字体...
但是常规GUI绘制通常选择竖线作为基本元素...也就是所有的制图都由竖线完成...
所以竖线或横线是GUI的基本元素...而不是点...

据说RA8875支持Rectangle单 {MOD}填充....那样画GUI更快...

的确基本所有的320X240以下的控制器直接点读...点写...
这种控制器本身速度都非常慢...点读/点写损失的速度也不在乎了...价格便宜结构简单...
adce
3楼-- · 2019-12-31 21:15
 精彩回答 2  元偷偷看……
myqiang1990
4楼-- · 2019-12-31 21:57
我没有看过别人的,只是很久以前瞄了几眼ucgui,大体知道到程序架构,后来按照这个思路写了一个,比较简单,但是绝对是gui的典型架构,,用消息驱动,,等会传个视频吧,,吧设计思路说一下,,
senjet
5楼-- · 2020-01-01 02:54
love_ourdev 发表于 2013-8-31 21:28
说的具体点就是:
假设设置左上角坐标的耗时为Ta,设置右下角坐标的耗时为Tb,传输一个像素值的耗时为Tc ...

你到底看明白我说的没有?你拿我说的大概意思稍微详细解释一遍然后拿来反驳我?这表示你很牛逼?
senjet
6楼-- · 2020-01-01 02:56
love_ourdev 发表于 2013-8-31 21:28
说的具体点就是:
假设设置左上角坐标的耗时为Ta,设置右下角坐标的耗时为Tb,传输一个像素值的耗时为Tc ...

如果你小学语文是体育老师教的,那我在这给你概括一下我说的意思:我说对我上面贴的程序而言,画线不会比画点快,因为上面画线也是最终调用的画点函数,这只是最通用的,只要实线画点就可以,但不一定是最有效率的!

一周热门 更多>