c#, скриншот, обрезка скриншота
private void button4_Click(object sender, EventArgs e)
{
Bitmap memoryImage;
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width - 95, s.Height - 10, myGraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
memoryImage.Save("C:\\Users\\valav\\source\\repos\\Schedule v2.5\\printscreen.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
Есть вот такой вот код, он делает скрин формы, как мне можно обрезать скрин, если есть не нужные детали слева/сверху
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Не нужно скришот, можно любой контрол отрисовать в битмап
private Bitmap DrawControlToBitmap(Control control)
{
Bitmap bmp = new Bitmap(control.Width, control.Height);
control.DrawToBitmap(bmp, new Rectangle(Point.Empty, control.Size));
return bmp;
}
Для формы будет так
private void button4_Click(object sender, EventArgs e)
{
Bitmap bmp = DrawControlToBitmap(this);
bmp.Save("image.jpg", ImageFormat.Jpeg);
}
Если нужно не всю форму, а какую-то панель, просто вместо this передайте аргументом нужный контрол, например панель, в которой размещена нужная группа контролов.
Если ваши текстбоксы не в панели, а просто разбросаны по форме, создайте такую панель и перенесите контролы в неё.
Если не знакомы, то обязательно познакомьтесь с FlowLayoutPanel и TableLayoutPanel, они помогут с позиционированием.
