@Nelo-001

Вырезать прямоугольник из Panel в WinForm C#?

Добрый день, делаю пейнт, сделал все ! осталось сделать печать прямоугольной области, рабочая область пейнта, находится в компоненте "panel" , надо как то сделать вырезание или копирование через rectangl и то что будет внутри rectangla то надо сделать фоном picture box. Пробовал много чего и ничего не вышло , помогите плз
  • Вопрос задан
  • 267 просмотров
Пригласить эксперта
Ответы на вопрос 1
Как вариант.
5c0009319fc88080499096.png
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        internal bool IsCut = false;// Флаг.
        internal Point startPoint;//стартовая точка выделения
        public Form1()
        {
            InitializeComponent();
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            IsCut = true;
        }

        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if(IsCut==true)
            {
                startPoint = Cursor.Position;//при нажатии кнопки мыши по panel запоминаем абсолютные координаты указателя мыши.
            }
        }

        private void panel1_MouseUp(object sender, MouseEventArgs e)//события "отпускания" кнопки мыши
        {
            if(IsCut==true)
            {
                Size size = new Size(Math.Abs(startPoint.X - Cursor.Position.X), Math.Abs(startPoint.Y - Cursor.Position.Y));//вычисляем размер выделенной области
                var bm = new Bitmap(size.Width, size.Height);// создаем bitmap заданного размера

                Graphics graphics = Graphics.FromImage(bm as Image);

                graphics.CopyFromScreen(startPoint, new Point(0, 0), bm.Size); //копируем часть изображения экрана в bitmap

                pictureBox1.Image = bm; //выводим в picturebox
                IsCut = false;// снимаем флаг необходимости выделения
            }
        }
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы