Считать данные из Region

165
09 марта 2018, 12:25

На форме находится PictureBox, в котором можно перетаскивать изображение путем зажатия левой клавиши мыши, и масштабировать путем прокрутки колесом мыши. Для PictureBox есть Region в форме круга, в котором он отображается. Как я могу получить изображение из этого Region? То есть именно такое изображение, которое я наблюдаю на форме?

Код прилагается:

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace Oncology_Detector
{
    public partial class FormMain : Form
    {
        private Image _sourceImage;
        private Bitmap _scaledBitmap;
        int _lx, _ly;
        int _cx, _cy;
        public FormMain()
        {
            InitializeComponent();
            // скругление pbSource
            GraphicsPath myPath = new GraphicsPath();
            myPath.AddEllipse(0, 0, pbSource.Width, pbSource.Height);
            Region myRegion = new Region(myPath);
            pbSource.Region = myRegion;
        }
        private void btnLoadSourceImage_Click(object sender, EventArgs e)
        {
            if (ofdSourceImage.ShowDialog() != DialogResult.OK)
                return;
            try
            {
                _sourceImage = Image.FromFile(ofdSourceImage.FileName);
                LoadInitialImage();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void LoadInitialImage()
        {
            if (_sourceImage != null)
            {
                int coef = _sourceImage.Width / pbSource.Width / 2;
                _scaledBitmap = new Bitmap(_sourceImage, _sourceImage.Width / coef, _sourceImage.Height / coef);
                pbSource.Refresh();
            }
        }
        private void pbSource_Paint(object sender, PaintEventArgs e)
        {
            if (_scaledBitmap != null)
                e.Graphics.DrawImageUnscaled(_scaledBitmap, _cx, _cy);
        }
        private void pbSource_MouseDown(object sender, MouseEventArgs e)
        {
            _lx = e.X;
            _ly = e.Y;
        }
        private void btnResetScale_Click(object sender, EventArgs e)
        {
            LoadInitialImage();
        }
        private void btnCrop_Click(object sender, EventArgs e)
        {
        }
        private void pbSource_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.X >= pbSource.Location.X && e.X <= pbSource.Location.X + pbSource.Width && e.Y >= pbSource.Location.Y && e.Y <= pbSource.Location.Y + pbSource.Height)
                if (pbSource.Capture)
                {
                    int dx = e.X - _lx;
                    int dy = e.Y - _ly;
                    _cx += dx;
                    _cy += dy;
                    _lx = e.X;
                    _ly = e.Y;
                    pbSource.Invalidate();
                }
        }
        private void pbSource_MouseWheel(object sender, MouseEventArgs e)
        {
            if (_sourceImage != null)
            {
                int step = e.Delta / 2;
                double coef = (_sourceImage.Height + step) * 1.0 / _sourceImage.Height;
                int newWidht = (int) (_scaledBitmap.Width * coef);
                int newHeight = (int) (_scaledBitmap.Height * coef);
                if (newWidht < pbSource.Width || newHeight <= pbSource.Height)
                    return;
                _scaledBitmap = new Bitmap(_sourceImage, newWidht, newHeight);
                pbSource.Refresh();
            }
        }
    }
}
READ ALSO
Вызов функции С++ из памяти С#

Вызов функции С++ из памяти С#

Здравствуйте! Возникла следующая проблема: появилась необходимость вызвать функцию из приложения, написанного на С++, путём вызова ее из памяти...

155
По поводу загрузки изображения во vue.js

По поводу загрузки изображения во vue.js

Подскажите, как можно загрузить изображение во vuejs без перезагрузки страницы, то есть только добавляю, и отображает на странице мгновенно

268
ios не работает .match

ios не работает .match

В загрузке странички аяксом использую регуляркуВезде работает кроме IOS

315
Как поместить фото на GoogleMap на Node.js?

Как поместить фото на GoogleMap на Node.js?

считывание EXIF данный с помощью пакета exifНеобходимо вытащить оттуда только геоданные и по ним разместить фото на карте

321