2011-09-28 34 views
5

Bối cảnhLàm thế nào để có được kích thước của ImageRectangle trong PictureBox?

Tôi muốn có thể lấy kích thước được vẽ của hình ảnh được thu phóng bên trong hình tượng (tôi sẽ giải thích bên dưới).

Thuộc tính PictureBox.ImageRectangle dường như chính xác những gì tôi đang tìm kiếm vì nó hiển thị chiều cao và chiều rộng của hình ảnh đã đổi kích thước, cũng như vị trí trên cùng bên trái, bên trái của điều khiển.

Sự cố là PictureBox.ImageRectangle là riêng tư và vì vậy tôi không thể đọc các giá trị mà không sử dụng phản chiếu (rõ ràng là không lý tưởng).

Câu hỏi thực tế

Câu hỏi của tôi là, là có một cách khác mà tôi có thể dễ dàng nhận được những giá trị mà không cần viết một phương pháp để tính toán những gì các giá trị "ought" được? Tôi có thể làm điều đó một cách dễ dàng, nhưng tôi cảm thấy tôi đang tái phát minh ra bánh xe.


Bối cảnh:

Tôi đang viết một ứng dụng xử lý ảnh đơn giản trong C# và một trong những điều nó đã làm là cho phép người dùng vẽ một vùng chọn xung quanh một phần của hình ảnh (rất giống công cụ Marquee trong Photoshop).

Tôi cần biết kích thước của hình ảnh được hiển thị để tôi biết vị trí đặt giới hạn của công cụ vùng chọn cũng như dịch các giá trị của hình chữ nhật được vẽ thành các điểm trên bitmap được chia tỷ lệ trong điều khiển.

Trả lời

2

Câu trả lời của tôi trông đơn giản vì vậy có thể tôi đang thiếu thứ gì đó, nhưng tôi nghĩ rằng Control.DisplayRectangle phù hợp với nhu cầu của bạn.

EDIT

OK, bỏ lỡ điểm; Tuy nhiên thấy How to get the value of non- public members of picturebox?

+0

Cảm ơn bạn đã nhìn vào CharlesB này. Tôi đã hy vọng tìm ra một giải pháp không liên quan đến sự phản chiếu, vì vậy tôi sẽ tiếp tục cố gắng. Cảm ơn một lần nữa :) –

+0

bạn được chào đón; đừng quên bỏ phiếu cho [vấn đề tại MS Connect] (http://connect.microsoft.com/VisualStudio/feedback/details/115469/make-pictureboxs-imagerectangle-property-public) – CharlesB

0

nếu bạn muốn truy cập kích thước của hình ảnh trong hộp hình ảnh bạn có thể sử dụng

GraphicsUnit units = GraphicsUnit.Point; 

RectangleF imgRectangleF = pictureBox1.Image.GetBounds(ref units); 
Rectangle imgRectangle = Rectangle.Round(imgRectangleF); 
Các vấn đề liên quan