Tôi đang cố gắng để có một điều khiển người dùng có góc tròn. Nó không có kích thước cố định nhưng nó thường không có chiều rộng lớn hơn 120 pixel.Cách tạo Điều khiển người dùng với các góc tròn?
Tôi cần Kiểm soát người dùng và nội dung của nó (nhãn và bảng) để có cạnh tròn và trông giống như một hộp tròn.
Tôi đã sử dụng mã này.
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn
(
int nLeftRect, // x-coordinate of upper-left corner
int nTopRect, // y-coordinate of upper-left corner
int nRightRect, // x-coordinate of lower-right corner
int nBottomRect, // y-coordinate of lower-right corner
int nWidthEllipse, // height of ellipse
int nHeightEllipse // width of ellipse
);
public static System.Drawing.Region GetRoundedRegion(int controlWidth, int controlHeight)
{
return System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, controlWidth - 5, controlHeight - 5, 20, 20));
}
Điều này cho phép điều khiển góc tròn nhưng sau khi nó đã được chạy lần afew và tôi đã thêm bội số của User Control của tôi với hình thức nó sẽ gây ra một sự rò rỉ và tôi sẽ nhận được WhiteBox với một chữ thập đỏ trên của tôi điều khiển người dùng.
Có cách nào tốt hơn để thực hiện việc này không?
Tôi cũng gặp sự cố này. Và hãy tin tôi, bỏ WinForms và bắt đầu với 'WPF'. Cách tốt hơn để tùy biến !! – kevintjuh93
Bạn sử dụng 'CreateRoundRectRgn' như thế nào? Tương tự như [this] (http://stackoverflow.com/q/17787573/1997232)? Sau đó, tất nhiên bạn sẽ có một rò rỉ xử lý. Bạn có muốn sửa lỗi (sau đó mã bưu điện nơi bạn sử dụng nó) hoặc đang tìm kiếm giải pháp thay thế? Một giải pháp thay thế có thể là điều khiển [trong suốt] (http://stackoverflow.com/q/9358500/1997232) với hình ảnh góc được làm tròn. – Sinatr
Sinatr, bạn chính xác đây là cách tôi đang làm điều này, GetRoundedRegion đang được gọi khi biểu mẫu được sơn lại, tiếc là tôi không thể gọi phương thức này trong OnHandleCreated() như được đề xuất trong liên kết của bạn vì kích thước rất cao và tại xử lý tạo ra các điều khiển kích thước là kích thước mặc định và nó đi abit ngẫu nhiên. – CJM