这就是最终的图形移动的函数。
之前从单一的BUFFER改成了双BUFFER,解决了部分问题,但是图形的上半部分总是会闪烁。
后来发现原来是DELAY 函数的位置不正确。
void Run()
{
int StepSize=5;
struct rect rect_Front={0,50,50,60};
SaveRectToBack_16Bit640480(rect_Front.x1,rect_Front.y1,rect_Front.x2,rect_Front.y2);
SwapBuffer_16BitTft640480();
SaveRectToBack_16Bit640480(rect_Front.x1,rect_Front.y1,rect_Front.x2,rect_Front.y2);
Draw(rect_Front);
while(1)
{
if(rect_Front.x1<0||rect_Front.x2>639)
StepSize*=-1;
SwapBuffer_16BitTft640480();
LoadRectFromBack_16Bit640480();
rect_Front.x1+=StepSize;
rect_Front.x2+=StepSize;
SaveRectToBack_16Bit640480(rect_Front.x1,rect_Front.y1,rect_Front.x2,rect_Front.y2);
Draw(rect_Front);
//Delay(2); //就是这里,应该放在下边就不闪动了。。。
SwapShow_16BitTft640480();
Delay(8);
}
}
经验啊。。。哈哈