EDIT: Хорошо, после нескольких ответов я сделаю несколько исправлений:потоп инициализации алгоритм заполнения с ++
byte r, g, b;
scr->GetRGB(mid.x, mid.y, (byte)& r, (byte)& g, (byte)& b);
while (r != (byte)0 && g != (byte)0 && b != (byte)0)
{
scr->SetRGB(mid.x, mid.y, (byte)255, (byte)0, (byte)0);
mid.x++;
FloodFill(scr, mid);
mid.x--;
mid.x--;
FloodFill(scr, mid);
mid.y++;
FloodFill(scr, mid);
mid.y--;
mid.y--;
FloodFill(scr, mid);
}
Plus, прежде чем сделать что-нибудь с параметрами, это функция GetRGB:
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];
}
И это SetRGB Функция:
void CDIB32::SetRGB(int x, int y, BYTE r, BYTE g, BYTE b)
{
//ASSERT(x < Width() && y < Height());
int off = y * ByteWid() + x * 4;
m_pBits[off] = b;
m_pBits[off+1] = g;
m_pBits[off+2] = r;
}
предположение пользователя OzMiz правильно, что линия вызывает Ошибка. Извинения за отсутствие ясности. И этот алгоритм действительно является отрывом из этого точного алгоритма, о котором вы думали. Любая идея о том, как сделать это лучше, ценится.
Не подлежит ответственности. – LogicStuff
Код выглядит очень сломанным для меня (например, это условие 'while'!). Я предлагаю найти лучший пример для работы. –
Какова подпись функций 'GetRGB()' и 'SetRGB()'? И на какой именно строке происходит ошибка? – Alnitak