2011-01-13 73 views
10

Thỉnh thoảng, tôi có một hình tượng cho phép nói 100x100. Nhưng hình ảnh nó sẽ hiển thị thực sự là 100x400.Làm cách nào để hiển thị thanh cuộn trên điều khiển PictureBox?

Tôi không muốn tăng kích thước của hình tượng đó. Thay vào đó, tôi muốn tạo một thanh cuộn dọc (hoặc nằm ngang nếu cần).

Tôi không thể tìm thấy thanh cuộn trong hộp công cụ, vì vậy tôi đoán tôi phải mã hóa nó. Nhưng bằng cách nào? Và tôi vẫn tự hỏi liệu tôi có mắc lỗi không và không thấy thanh cuộn trong hộp công cụ. Lời xin lỗi của tôi sau đó: (

Trả lời

19

tôi cho rằng bạn thể thêm điều khiển thanh cuộn riêng biệt và đồng bộ hóa Scroll sự kiện của họ lên với bù đắp mà tại đó các hình ảnh trong PictureBox được rút ra, nhưng điều đó có vẻ như công việc thực tế. có một cách tốt hơn.

  1. Thêm một điều khiển Panel vào biểu mẫu của bạn và đặt AutoScroll property thành "Đúng". Điều này sẽ khiến điều khiển tự động hiển thị thanh cuộn khi có chứa nội dung nằm ngoài giới hạn hiển thị hiện tại của nó. .NET Framework sẽ quản lý mọi thứ cho bạn dưới sự bảo hiểm, mà không cần phải viết một dòng mã.

  2. Kéo và thả điều khiển PictureBox bên trong của điều khiển Panel mà bạn vừa thêm vào. Điều khiển Panel sau đó sẽ phát hiện rằng một trong các điều khiển con của nó lớn hơn vùng hiển thị của nó và hiển thị thanh cuộn, nhờ thuộc tính AutoScroll. Khi người dùng di chuyển các thanh cuộn, phần của hình ảnh trong PictureBox của bạn hiển thị sẽ được tự động điều chỉnh. Ma thuật.

(Lý do bạn phải sử dụng một điều khiển Panel như một container là vì PictureBox không kế thừa trực tiếp từ lớp ScrollableControl cơ sở, đó là những gì cung cấp AutoScroll tài sản.)

+2

Tôi phải đặt thuộc tính 'SizeMode' của 'PictureBox' thành 'AutoSize' để làm cho giải pháp này hoạt động – Niroshan

+1

Và tôi muốn để lưu ý rằng PictureBox không thể được gắn trong Bảng điều khiển. – miroxlav

2

Không có thanh cuộn tự động trên hộp hình ảnh, nhưng bạn có thể thêm điều khiển VScrollBar (và HScrollBar) vào biểu mẫu và xử lý ảnh bằng cách vẽ lại theo cách khác. sự kiện Scroll là bắn.

+1

Tôi quá lười để làm điều này. ;-) –

+0

Cách của bạn nhanh hơn rất nhiều, nhưng bạn không được tận hưởng sự thất vọng của việc tìm ra cách nào để bù đắp hình ảnh khi nó cuộn hoặc khi di chuyển thanh cuộn ở đâu. – xpda

+0

Tôi không muốn thất vọng: (....... nhưng bạn có một ý tưởng hay ở đó – Voldemort

3

Tôi cố gắng này và nó hoạt động tốt. Nhưng tôi lưu ý rằng nếu hình tượng được gắn trên bảng điều khiển, hình ảnh sẽ tự động được đặt thành kích thước của bảng điều khiển chính và không thể được đặt lớn hơn (ít nhất là không theo bất kỳ cách nào tôi có thể tìm thấy). Điều này đánh bại mục đích của kỹ thuật. Vì vậy, - đặt các picturebox trên bảng điều khiển, nhưng không dock nó, và nó sẽ làm việc hoàn hảo.

Các vấn đề liên quan