Как получить размеры ImageRectangle в PictureBox? - PullRequest
5 голосов
/ 28 сентября 2011

Фон

Я хочу, чтобы можно было получить нарисованные размеры увеличенного изображения в картинке (я объясню ниже).

Мне кажется, что именно свойство PictureBox.ImageRectangle именно то, что я ищу, потому что оно показывает высоту и ширину измененного размера изображения, а также его относительную верхнюю левую позицию внутри элемента управления.

Проблема в том, что PictureBox.ImageRectangle закрыт, поэтому я не могу прочитать значения без использования отражения (что, очевидно, не идеально).

Актуальный вопрос

У меня вопрос: есть ли другой способ, которым я могу легко получить эти значения, не написав метод для вычисления того, какими должны быть значения? Я могу сделать это достаточно легко, но я чувствую, что заново изобрету колесо.


Контекст:

Я пишу простое приложение для обработки изображений на C #, и одна из вещей, которые он должен сделать, - позволить пользователю нарисовать выделение вокруг части изображения (во многом как инструмент Marquee в Photoshop).

Мне нужно знать размеры визуализированного изображения, чтобы я знал, где установить границы моего инструмента выделения, а также перевести значения нарисованного прямоугольника в точки на масштабированном растровом изображении внутри элемента управления.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Мой ответ выглядит простым, поэтому, может быть, я что-то упустил, но я думаю, Control.DisplayRectangle соответствует вашим потребностям.

РЕДАКТИРОВАТЬ

ОК, пропустил точку; однако см. Как получить значение непубличных членов picturebox?

0 голосов
/ 27 декабря 2014

Если вы хотите получить доступ к размеру изображения в графическом окне, вы можете использовать

GraphicsUnit units = GraphicsUnit.Point;

RectangleF imgRectangleF = pictureBox1.Image.GetBounds(ref units);
Rectangle imgRectangle = Rectangle.Round(imgRectangleF);
...