
vc++ 1.读取位图2.循环判断该位图每个像素颜色(从左上到右下)并根据颜色给一个int二维数组赋值 求高手指点
本人菜鸟要具体代码位图在C盘根目录如果像素颜色是红色给数组赋值为1000,白色15,黑色0,其他颜色2000代码测试之后正确给分...
本人菜鸟 要具体代码
位图在C盘根目录
如果像素颜色是红色给数组赋值为1000,白色15,黑色0,其他颜色2000
代码测试之后正确给分 展开
位图在C盘根目录
如果像素颜色是红色给数组赋值为1000,白色15,黑色0,其他颜色2000
代码测试之后正确给分 展开
展开全部
char szBmp[MAX_PATH] = "C:\\cs.bmp";
HANDLE Writehandle=::LoadImage(NULL,szBmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if(Writehandle == NULL) return ;
CDC memWriteDC;
memWriteDC.CreateCompatibleDC(NULL);
CBitmap bmWrite;
bmWrite.Attach(Writehandle);
memWriteDC.SelectObject(&bmWrite);
BITMAP btm;
bmWrite.GetBitmap(&btm);
int WriteWidth = btm.bmWidth;
int WriteHeight = btm.bmHeight;
int **a = new int *[WriteHeight];
for (int i = 0; i < WriteHeight; i++)
{
a[i] = new int[WriteWidth];
}
COLORREF col;
for (int y = 0; y < WriteHeight; y++)
{
for (int x = 0; x < WriteWidth; x++)
{
col = memWriteDC.GetPixel(x, y) & 0xFFFFFF;
if (0xFF == col)
{
a[x][y] = 1000;
}
else
{
if (0xFFFFFF == col)
{
a[x][y] = 15;
}
else
{
if (0 == col)
{
a[x][y] = 0;
}
else
{
a[x][y] = 2000;
}
}
}
}
}
for (i = 0; i < WriteHeight; i++)
{
delete a[i];
}
delete []a;
}
你测试一下
HANDLE Writehandle=::LoadImage(NULL,szBmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if(Writehandle == NULL) return ;
CDC memWriteDC;
memWriteDC.CreateCompatibleDC(NULL);
CBitmap bmWrite;
bmWrite.Attach(Writehandle);
memWriteDC.SelectObject(&bmWrite);
BITMAP btm;
bmWrite.GetBitmap(&btm);
int WriteWidth = btm.bmWidth;
int WriteHeight = btm.bmHeight;
int **a = new int *[WriteHeight];
for (int i = 0; i < WriteHeight; i++)
{
a[i] = new int[WriteWidth];
}
COLORREF col;
for (int y = 0; y < WriteHeight; y++)
{
for (int x = 0; x < WriteWidth; x++)
{
col = memWriteDC.GetPixel(x, y) & 0xFFFFFF;
if (0xFF == col)
{
a[x][y] = 1000;
}
else
{
if (0xFFFFFF == col)
{
a[x][y] = 15;
}
else
{
if (0 == col)
{
a[x][y] = 0;
}
else
{
a[x][y] = 2000;
}
}
}
}
}
for (i = 0; i < WriteHeight; i++)
{
delete a[i];
}
delete []a;
}
你测试一下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询