From b75e3600d50eeb181ecdfd97220816ed6e35460c Mon Sep 17 00:00:00 2001 From: Polarix <326684221@qq.com> Date: Mon, 29 Mar 2021 00:00:46 +0800 Subject: [PATCH] 2021-03-28: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正了圆角矩形在倒角半径为某些特定值时绘制错误的问题。 --- GUI/src/SGUI_Basic.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/GUI/src/SGUI_Basic.c b/GUI/src/SGUI_Basic.c index 4bc9eec..d0dabcd 100644 --- a/GUI/src/SGUI_Basic.c +++ b/GUI/src/SGUI_Basic.c @@ -756,11 +756,15 @@ void SGUI_Basic_DrawRoundedRectangle(SGUI_SCR_DEV* pstDeviceIF, SGUI_INT iStartX // Fill if(eFillColor != SGUI_COLOR_TRANS) { - SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosXOffset+1, iStartX+iWidth-iFillet+iPosXOffset-2, iStartY+iFillet-iPosYOffset, eFillColor); + if(iPosXOffset != iPosYOffset) + { + SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosXOffset+1, iStartX+iWidth-iFillet+iPosXOffset-2, iStartY+iFillet-iPosYOffset, eFillColor); + } if((iPosXOffset != iFillet) && (iXOffset_Old != iPosXOffset)) { SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosYOffset+1, iStartX+iWidth-iFillet+iPosYOffset-2, iStartY+iFillet-iPosXOffset, eFillColor); } + pstDeviceIF->fnSyncBuffer(); } // Draw arc edge for 2nd quadrant(Left top arc). SGUI_Basic_DrawPoint(pstDeviceIF, iStartX+iFillet-iPosXOffset, iStartY+iFillet-iPosYOffset, eEdgeColor); @@ -768,11 +772,13 @@ void SGUI_Basic_DrawRoundedRectangle(SGUI_SCR_DEV* pstDeviceIF, SGUI_INT iStartX // Draw arc edge for 1st quadrant(Right top arc). SGUI_Basic_DrawPoint(pstDeviceIF, iStartX+iWidth-iFillet+iPosXOffset-1, iStartY+iFillet-iPosYOffset, eEdgeColor); SGUI_Basic_DrawPoint(pstDeviceIF, iStartX+iWidth-iFillet+iPosYOffset-1, iStartY+iFillet-iPosXOffset, eEdgeColor); - // Fill if(eFillColor != SGUI_COLOR_TRANS) { - SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosXOffset+1, iStartX+iWidth-iFillet+iPosXOffset-2, iStartY+iHeight-iFillet+iPosYOffset-1, eFillColor); + if(iPosXOffset != iPosYOffset) + { + SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosXOffset+1, iStartX+iWidth-iFillet+iPosXOffset-2, iStartY+iHeight-iFillet+iPosYOffset-1, eFillColor); + } if((iPosXOffset != iFillet) && (iXOffset_Old != iPosXOffset)) { SGUI_Basic_DrawHorizontalLine(pstDeviceIF, iStartX+iFillet-iPosYOffset+1, iStartX+iWidth-iFillet+iPosYOffset-2, iStartY+iHeight-iFillet+iPosXOffset-1, eFillColor);