Здравствуйте, недавно я задал вопрос. Но ответа на него так ине последовало, решил пойти по другому пути, сделать скриншот окна и от туда вырезать капчу и запихать ее в Bitmap.
Вопрос: как сделать скриншот только того окна которое я задам?
скриншот произвольной области экрана:
private void button1_Click(object sender, EventArgs e)
{
// 100, 100 размер копируемой области
Bitmap screen = new Bitmap(100, 100);
using (Graphics g = Graphics.FromImage(screen))
{
// 5, 5 - координаты левого верхнего угла копируемой области
g.CopyFromScreen(5, 5, 00, 0, screen.Size);
pictureBox1.Image = screen;
}
}
Уже нашел ответ, спасибо
Rectangle bounds = this.Bounds;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
bitmap.Save("test.jpg", ImageFormat.Jpeg);
}
Вот функция для вырезки
public Bitmap Cut(Bitmap bmp, int x1, int y1, int x2, int y2)
{
var img = bmp;
int width = x2 - x1 + 1;
int height = y2 - y1 + 1;
var result = new Bitmap(width, height);
for (int i = x1; i <= x2; i++)
for (int j = y1; j <= y2; j++)
result.SetPixel(i - x1, j - y1, img.GetPixel(i, j));
return result;
}
Вот пример использования
Bitmap capthaImg = Cut(bitmap, 32, 279, 162, 329);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей