Лучшее решение, вероятно, состоит в том, чтобы отслеживать максимальные значения X и Y, которые используются при рисовании, хотя это будет полностью ручной процесс.
Другим вариантом будет сканирование полных строк и столбцов растрового изображения (начиная справа и снизу), пока вы не столкнетесь с небелым пикселем, но это будет очень неэффективный процесс.
int width = 0;
int height = 0;
for(int x = bmpImage.Width - 1, x >= 0, x++)
{
bool foundNonWhite = false;
width = x + 1;
for(int y = 0; y < bmpImage.Height; y++)
{
if(bmpImage.GetPixel(x, y) != Color.White)
{
foundNonWhite = true;
break;
}
}
if(foundNonWhite) break;
}
for(int y = bmpImage.Height - 1, x >= 0, x++)
{
bool foundNonWhite = false;
height = y + 1;
for(int x = 0; x < bmpImage.Width; x++)
{
if(bmpImage.GetPixel(x, y) != Color.White)
{
foundNonWhite = true;
break;
}
}
if(foundNonWhite) break;
}
Опять же, Я не рекомендую это как решение , но оно будет делать то, что вы хотите, без необходимости отслеживать пространство координат, которое вы фактически используете.