gpt4 book ai didi

c++ - flood fill 获取和 RGB 值

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:57 25 4
gpt4 key购买 nike

我正在编写一种填充方法,用红色填充图像(狗的轮廓)。

在我的 TestShellDlg.cpp 中是洪水填充方法。 CTestShellDlg::m_pScreenDib 成员是一个 CDIB32 位图类,包含图形并绘制它们。

我想对当前像素进行采样,如果它不是黑色(轮廓的颜色),则将其着色为红色。这是 Dib32.cpp 类中的 setter/getter :

void CDIB32::GetRGB(int x, int y, BYTE& r, BYTE& g, BYTE& b)
{
if (x >= Width() || y >= Height())
IERROR;

int off = y * ByteWid() + x * 4;
b = m_pBits[off];
g = m_pBits[off+1];
r = m_pBits[off+2];
}

这是我在 TestShellDlg.cpp 类中的 floodfill 方法:

void CTestShellDlg::FloodFill(CPoint& mid)
{

//while the current pixel colour is not black, set it to red and recursively loop
m_pScreenDib ->GetRGB(mid.x,mid.y, (byte)& r,(byte)& g,(byte)& b);
while(r !=(byte)0, g !=(byte)0, b !=(byte)0)
{
m_pScreenDib -> SetRGB(mid.x, mid.y,(byte)255,(byte) 0,(byte) 0);
mid.x++;
FloodFill(mid);
mid.x--;
FloodFill(mid);
mid.y++;
FloodFill(mid);
mid.y--;
FloodFill(mid);
}

}

问题是,它说 r, g, b 是未定义的。我不确定为什么。非常感谢任何帮助。

最佳答案

你需要在使用它们之前声明它们(你不能在参数列表中声明它们内联)

byte r,g,b;
m_pScreenDib ->GetRGB(mid.x,mid.y, (byte)& r,(byte)& g,(byte)& b);

关于c++ - flood fill 获取和 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com