|

楼主 |
发表于 2025-7-16 22:40:11
|
显示全部楼层
本帖最后由 njsssmq 于 2025-7-16 22:41 编辑
通过摸索发现:1、指定区域GUI_RECT起始位置为(0,0),GUI_MEMDEV_CopyRect目标坐标可以为设备边界内任意值;
2、GUI_MEMDEV_CopyRect目标坐标为(0,0),指定区域GUI_RECT可以为设备边界内任意区域。
添加中间内存设备,实现二个内存设备区域复制粘贴。
GUI_MEMDEV_Handle hMemSrc,hMemDst;
int rsl;
// 在源设备上绘制内容
hMemSrc = GUI_MEMDEV_CreateFixed32(0, 0, 800, 600);
.......
// 在目标设备上绘制内容 (蓝色矩形)
hMemDst = GUI_MEMDEV_CreateFixed32(0 ,0, 800, 600);
......
// 源区域,可任意选择
GUI_RECT srcRect = {600, 0, 799, 599};
hMemMid = GUI_MEMDEV_CreateFixed32(0 , 0, 800, 600);
// 复制到中间设备(0,0)位置
rsl = GUI_MEMDEV_CopyRect (hMemSrc, hMemMid, &srcRect, 0, 0);
printf("1:rsl = %d\r\n",rsl);
// 设置中间设备区域
srcRect.x0 = 0;
srcRect.y0 = 0;
srcRect.x1 = 799 - 600;
srcRect.y1 = 599;
// 从中间位置复制到目标设备,目标坐标可任意指定
rsl = GUI_MEMDEV_CopyRect (hMemMid, hMemDst, &srcRect, 50, 0);
printf("2:rsl = %d\r\n",rsl);
GUI_MEMDEV_Select(0);
GUI_MEMDEV_CopyToLCD(hMemDst);
while (1)
{
GUI_Exec();
} |
|