完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以上是我自己编的一段画圆的程序,其中x , y 表示画圆的圆心。r 圆的半径。。。?LCD_WritePoint() 为画点函数。请问为什么运行程序后怎么变成了整个屏幕的刷屏了?请问原子哥你的画圆的算法是什么? |
|
相关推荐
5个回答
|
|
|
|
|
|
请问我那个算法怎么不行啊? 怎么一运行就是把整个屏幕都刷成了RED?
|
|
|
|
你自己软件仿真看看吧.
|
|
|
|
明白为什么我自己的算法不行了 。。。。因为这个TFTLCD相当于是一个点阵。如果满等式(i-x)^2+(j-y)^2=r^2 的点不一定都在TFTLCD的点上。。。我那个循环中i ,j 一定是整数。。。而满中这个公式的i ,j 参数可能是小数。。。。
应该采用中点画圆法 见下链接祥解中点画圆 http://course.cug.edu.cn/cugThird/CGOL_NET/CLASS/course/2-2-2-a.htm |
|
|
|
void LCD_DrawPoint(u16 X,u16 Y,u16 Colour) //液晶屏上实现画一个点的函数{ LCD_SetXY(X,Y);ili9481_WriteData(Colour);}
/* 函数LCD_DrawCriclePixel画圆的像素点 */void LCD_DrawCriclePixel(u16 x0,u16 y0,u16 x,u16 y,u16 colour){LCD_DrawPoint(x0+x,y0+y,colour); //LCD_DrawPoint(x,y,colour)函数为在对应x,y坐标处画一个颜色为colour的点,根据不同液晶屏修改下LCD_DrawPoint(x0+x,y0-y,colour);LCD_DrawPoint(x0-x,y0+y,colour);LCD_DrawPoint(x0-x,y0-y,colour);LCD_DrawPoint(x0+y,y0+x,colour);LCD_DrawPoint(x0+y,y0-x,colour);LCD_DrawPoint(x0-y,y0+x,colour);LCD_DrawPoint(x0-y,y0-x,colour);} /* 画圆函数,x0,y0为圆心坐标,r为半径,colour为颜色 */void LCD_DrawCricle(int x0,int y0,int r,u16 colour){int x,y; float d;x = 0;y = r;d = 5.0/4-r;while(x<=y){LCD_DrawCriclePixel(x0,y0,x,y,colour);if(d<0)d+=x*2.0+3;else{d+=2.0*(x-y)+5;y--;}x++;}} 下图中红色圈圈为这段代码画出的圆,液晶屏是原子哥店铺里那款3.5寸液晶 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
653浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
523浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 14:19 , Processed in 0.728443 second(s), Total 57, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号