TFT

您所在的位置:网站首页 如何用编程画出来画一个圆 TFT

TFT

2024-07-13 00:29:37| 来源: 网络整理| 查看: 265

TFT-LCD显示直线、矩形、圆形

之前显示ASCII字符、中文和图片都是使用的取模软件,这次直接用代码驱动显示直线、矩形和圆形

在前面显示图片的工程上继续加函数

获取像素点 /** * @name LCD_GetPointPiexl * @brief 获取像素点 * @param usX:X轴坐标 * usY:Y轴坐标 * @retval None */ static uint16_t LCD_GetPointPiexl(uint16_t usX,uint16_t usY) { uint16_t usR,usG,usB; uint16_t usColor; //颜色数据,RGB565格式 //判断坐标是否有效 if((usX //判断坐标是否有效 if((usX uint16_t i; uint16_t j; //动态查看画线效果变量 uint16_t usX_Current,usY_Current; int16_t sError_X=0,sError_Y=0,sDelta_X,sDelta_Y,sDistance; int16_t sIncrease_X, sIncrease_Y; //设置坐标增量 sDelta_X = usX_End - usX_Start; sDelta_Y = usY_End - usY_Start; usX_Current = usX_Start; usY_Current = usY_Start; //算法,直接拿来用 if(sDelta_X > 0) { /* 设置单步方向 */ sIncrease_X=1; } else if(sDelta_X == 0) { /* 垂直线 */ sIncrease_X = 0; } else { sIncrease_X = -1; sDelta_X = -sDelta_X; } if(sDelta_Y > 0) { sIncrease_Y = 1; } else if(sDelta_Y==0) { /* 水平线 */ sIncrease_Y = 0; } else { sIncrease_Y = -1; sDelta_Y = -sDelta_Y; } if(sDelta_X > sDelta_Y) { /* 选取基本增量坐标轴 */ sDistance = sDelta_X; } else { sDistance = sDelta_Y; } //画线输出 for(i=0;i sError_X -= sDistance; usX_Current += sIncrease_X; } if(sError_Y > sDistance) { sError_Y -= sDistance; usY_Current += sIncrease_Y; } //动态看画线效果,可删除 for(j=0;j TFT_LCD.LCD_FillColor(usX_Start,usY_Start,usWidth,usHeight,usColor); } //不填充矩形 else { //画四条线 TFT_LCD.LCD_DrawLine(usX_Start, usY_Start, usX_Start + usWidth - 1, usY_Start, usColor); TFT_LCD.LCD_DrawLine(usX_Start + usWidth - 1, usY_Start, usX_Start + usWidth - 1, usY_Start + usHeight - 1, usColor); TFT_LCD.LCD_DrawLine(usX_Start + usWidth - 1, usY_Start + usHeight - 1, usX_Start, usY_Start + usHeight - 1, usColor); TFT_LCD.LCD_DrawLine(usX_Start, usY_Start + usHeight - 1, usX_Start, usY_Start, usColor); } } 画圆

使用 Bresenham 算法画圆

/** * @name LCD_DrawCircle * @brief 在LCD屏幕上使用 Bresenham 算法画圆 * @param usX_Center:圆心X坐标 * usY_Center:圆心Y坐标 * usRadius:圆的半径(单位像素) * usColor:圆的颜色 * ucFilled:选择是否填充圆形 参数:Filled:填充,unFilled:不填充 * @retval None */ static void LCD_DrawCircle(uint16_t usX_Center,uint16_t usY_Center,uint16_t usRadius,LCD_Color_t usColor,Filled_t ucFilled) { int16_t sCurrentX, sCurrentY; int16_t sError; sCurrentX = 0; sCurrentY = usRadius; sError = 3- (usRadius for(sCountY=sCurrentX;sCountY TFT_LCD.LCD_SetPointPiexl(usX_Center + sCurrentX, usY_Center + sCurrentY, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center - sCurrentX, usY_Center + sCurrentY, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center - sCurrentY, usY_Center + sCurrentX, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center - sCurrentY, usY_Center - sCurrentX, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center - sCurrentX, usY_Center - sCurrentY, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center + sCurrentX, usY_Center - sCurrentY, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center + sCurrentY, usY_Center - sCurrentX, usColor); TFT_LCD.LCD_SetPointPiexl(usX_Center + sCurrentY, usY_Center + sCurrentX, usColor); } sCurrentX++; if(sError sError += (10 + 4*(sCurrentX - sCurrentY)); sCurrentY--; } } } 主函数调用 /* * @name Run * @brief 系统运行 * @param None * @retval None */ static void Run() { //画直线 TFT_LCD.LCD_DrawLine(50,20,200,20,Color_RED); TFT_LCD.LCD_DrawLine(50,30,200,30,Color_GREEN); TFT_LCD.LCD_DrawLine(50,40,200,40,Color_BLUE); TFT_LCD.LCD_DrawLine(50,50,200,50,Color_BLACK); TFT_LCD.LCD_DrawLine(50,60,200,60,Color_YELLOW); //中间直线 TFT_LCD.LCD_DrawLine(120,90,120,290,Color_BLUE); //画填充矩形 TFT_LCD.LCD_DrawRectangle(40,90,60,80,Color_BLACK,Filled); //画不填充矩形 TFT_LCD.LCD_DrawRectangle(140,90,60,80,Color_BLACK,unFilled); //画不填充圆形 TFT_LCD.LCD_DrawCircle(70,250,40,Color_RED,unFilled); //画填充圆形 TFT_LCD.LCD_DrawCircle(170,250,40,Color_RED,Filled); //动态画矩形和圆形 // uint8_t i; // for(i=10;i // TFT_LCD.LCD_DrawRectangle(50+i,50,20,20,Color_GRAY,Filled); //动态画矩形 // TFT_LCD.LCD_DrawCircle(120,220,i,Color_GRAY,unFilled); //动态画圆形 // HAL_Delay(1000); // } } 显示效果

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭