⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image.c

📁 一个在brew中使用image显示的例子, 很适合新手学习
💻 C
📖 第 1 页 / 共 2 页
字号:

				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 + -