void BlackHole(const char* filename)
{
IMAGE img1;
int imagHight, imagWidth;
//Bitmap bmp;
//bmp.LoadBitmap("C:\\Users\\44805\\Desktop\\test.bmp");
//bmp.fillHole({ 0,255,0 });
//bmp.fillHole(300, 1600, { 0,255,0 });
BYTE R;
BYTE G;
BYTE B; //读取像素点RGB
MOUSEMSG m; // 定义鼠标消息
// 读取图片至绘图窗口
loadimage(&img1, _T("C:\\Users\\44805\\Desktop\\test.bmp"));//获取图片
imagHight = img1.getheight();
imagWidth = img1.getwidth(); //获取图片高度和宽度
initgraph(imagWidth, imagHight, SHOWCONSOLE);//设置绘图窗口和图片一样大 并且显示控制台窗口
putimage(0, 0, &img1);//显示图片
char str[256] = { 0 };
while (1)
{
FlushMouseMsgBuffer();
// 获取一条鼠标消息
m = GetMouseMsg();
switch (m.uMsg)
{
case WM_LBUTTONDOWN:
//如果按下鼠标左键
m.x = (short)m.x / 256;
m.y = (short)m.y / 256;
R = GetRValue(getpixel(m.x , m.y ));
G = GetGValue(getpixel(m.x , m.y ));
B = GetBValue(getpixel(m.x , m.y ));//获取RGB的三个分量值
//bmp.fillHole(imagHight - m.y, m.x, { 0,255,0 });
printf("X:%3d Y:%3d R:%3d G:%3d B:%3d \n", m.x, m.y, R, G, B);//打印像素点位置和对应的RGB值
break;
case WM_RBUTTONUP:
return; // 按鼠标右键退出程序
}
}
closegraph();
}
鼠标位置获取溢出short
没错?完全可以正常运行 -
xiongfj ◑◑
2021-6-12
你是怎么判定“鼠标位置获取溢出”的?什么描述都没有,谁知道你的代码什么意思。