📄 image.c
字号:
default:break;
};//end of switch
}// end of for loop
new_y++;
new_x = 0;
break;
case 70://固定取点;10个点,取7个,分别是0,1,3,4,6,7,9
for (pMe->i = 0; pMe->i <= (uint16) pMe->bi.cx; pMe->i++)
{
switch (pMe->i % 10)
{
case 0:case 1:case 3:case 4:case 6:case 7:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ, new_x++, new_y,
pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of loop
new_y++;
new_x = 0;
break;
case 80://固定取点;10个点,取8个,分别是0,1,3,4,5, 6,8,9
for (pMe->i = 0; pMe->i <= (uint16) pMe->bi.cx; pMe->i++)
{
switch (pMe->i % 10)
{
case 0:case 1:case 3:case 4:case 5:case 6:case 8:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ, new_x++, new_y,
pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of loop
new_y++;
new_x = 0;
break;
case 90://固定取点;10个点,取9个,分别是0,1,2, 3,5, 6,7, 8,9
for (pMe->i = 0; pMe->i <= (uint16) pMe->bi.cx; pMe->i++)
{
switch (pMe->i % 10)
{
case 0:case 1:case 2:case 3:case 5:case 6:case 7:case 8:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ, new_x++, new_y,
pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of loop
new_y++;
new_x = 0;
break;
default:if (sampleX >= 100)
{
//放大,包含所有的倍数放大
for (pMe->i = 0; pMe->i <= (uint16) pMe->bi.cx; pMe->i++)
{
//得到象素点
IBITMAP_GetPixel(pMe->m_pBitmap, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中,注意考虑放大倍数
for (new_x = pMe->i*sampleX / 100;
new_x <= (pMe->i + 1) * sampleX / 100 - 1;
new_x++)
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ, new_x,
new_y, pMe->pColor, AEE_RO_COPY);
}//end of for loop
new_y++;
}
break;
}// end of the big switch
// CHECK_ERROR(IBITMAP_BltIn(pbmScreen, 300, 65, ((uint16)bi.cx*sampleX/100), ((uint16)pMe->bi.cy), pMe->m_pBitmap_OBJ, 0, 0, AEE_RO_COPY));
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//对Y轴按照要求变换
new_x = 0;
new_y = 0;
//创建新的兼容位图
CHECK_ERROR(IBITMAP_CreateCompatibleBitmap(pMe->pbmScreen,
&pMe->m_pBitmap_OBJ_OBJ,
(uint16) ((uint16) pMe->bi.cx * sampleX / 100),
(uint16) ((uint16) pMe->bi.cy * sampleY / 100)));
for (pMe->i = 0;
pMe->i <= (uint16) pMe->bi.cx*sampleX / 100;
pMe->i++)//X轴不变
switch (sampleY)
{
case 10://采样率为1/10,每10个点采样一个点
case 20://采样率为20/100,每5个点采样一个点
case 30://采样率为30/100,每3个点采样一个点
case 40://采样率为40/100,每2个点采样一个点
case 50://采样率为50/100,每2个点采样一个点
for (pMe->j = 0;
pMe->j <= (uint16) pMe->bi.cy;
pMe->j = pMe->j + 100 / sampleY)
{
//100/sampleX
//得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x, new_y++,
pMe->pColor, AEE_RO_COPY);
}
}
new_x++;
new_y = 0;
break;
case 60://固定取点;10个点,取6个,分别是0,2,3,5,6,8,
for (pMe->j = 0; pMe->j <= (uint16) pMe->bi.cy; pMe->j++)
{
switch (pMe->j % 10)
{
case 0:case 2:case 3:case 5:case 6:case 8://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x,
new_y++, pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of for loop
new_x++;
new_y = 0;
break;
case 70://固定取点;10个点,取7个,分别是0,1,3,4,6,7,9
for (pMe->j = 0; pMe->j <= (uint16) pMe->bi.cy; pMe->j++)
{
switch (pMe->j % 10)
{
case 0:case 1:case 3:case 4:case 6:case 7:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x,
new_y++, pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of loop
new_x++;
new_y = 0;
break;
case 80://固定取点;10个点,取8个,分别是0,1,3,4,5, 6,8,9
for (pMe->j = 0; pMe->j <= (uint16) pMe->bi.cy; pMe->j++)
{
switch (pMe->j % 10)
{
case 0:case 1:case 3:case 4:case 5:case 6:case 8:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x,
new_y++, pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of for loop
new_x++;
new_y = 0;
break;
case 90://固定取点;10个点,取9个,分别是0,1,2, 3,5, 6,7, 8,9
for (pMe->j = 0; pMe->j <= (uint16) pMe->bi.cy; pMe->j++)
{
switch (pMe->j % 10)
{
case 0:case 1:case 2:case 3:case 5:case 6:case 7:case 8:case 9://得到象素点
{
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x,
new_y++, pMe->pColor, AEE_RO_COPY);
}
break;
default:break;
};//end of switch
}// end of for loop
new_x++;
new_y = 0;
break;
default:if (sampleY >= 100)
{
//放大,包含所有的倍数放大
for (pMe->j = 0; pMe->j <= (uint16) pMe->bi.cy; pMe->j++)
{
//得到象素点
IBITMAP_GetPixel(pMe->m_pBitmap_OBJ, pMe->i, pMe->j,
&pMe->pColor);
//写到新的位图中,注意考虑放大倍数
for (new_y = pMe->j*sampleY / 100;
new_y <= (pMe->j + 1) * sampleY / 100 - 1;
new_y++)
IBITMAP_DrawPixel(pMe->m_pBitmap_OBJ_OBJ, new_x,
new_y, pMe->pColor, AEE_RO_COPY);
}//end of for loop
new_x++;
}
break;
}// end of the big switch
//CHECK_ERROR(IBITMAP_BltIn(pbmScreen, 0, 65, ((uint16)pMe->bi.cx*sampleX/100), ((uint16)pMe->bi.cy*sampleY/100), pMe->m_pBitmap_OBJ_OBJ, 0, 0, AEE_RO_COPY));
//用 pMe->m_pBitmap 来显示目标位图
IDISPLAY_BitBlt(pMe->a.m_pIDisplay, 0, 0,
((uint16) pMe->bi.cx * sampleX / 100),
((uint16) pMe->bi.cy * sampleY / 100), pMe->m_pBitmap_OBJ_OBJ, 0, 0,
AEE_RO_COPY);
//////////////////////////////////////////////////////////////////////////
//显示时间
time2 = ISHELL_GetTimeMS(pMe->a.m_pIShell);
pMe->timer2 = time2 - time1;
WSPRINTF(pMe->timer_char2, 32, fmt, pMe->timer2);//pMe->timer2);
return SUCCESS;
Error : return nErr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -