Vì vậy, tôi không quen với việc phát triển biểu mẫu cửa sổ.Cách xóa đồ họa trên điều khiển trong suốt ở dạng cửa sổ
Tôi đang cố gắng tạo thành phần "này, tôi đang bận làm việc" chỉ xoay hình xung quanh. Tôi muốn điều khiển này được thoáng qua và vẽ trên đầu trang của bất kỳ điều khiển khác. Lớp kế thừa trực tiếp từ Control.
Vì vậy, tôi có điều này trong constructor:
SetStyle(ControlStyles.Opaque, true);
và điều này:
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20;
return parms;
}
}
nào được tôi một điều khiển mà sẽ vẽ trên đầu trang của các điều khiển khác.
Bây giờ vấn đề của tôi là vấn đề này. Tôi vẽ lại điều khiển một vài lần trong một giây để tạo ra một hình ảnh động trơn tru. Tuy nhiên, tôi không thể tìm ra cách để xóa những gì được vẽ trong khung trước đó. Sử dụng e.Graphics.Clear(Color.Transparent)
trong OnPaint
chuyển toàn bộ điều khiển màu đen.
Có cách nào để chỉ xóa nội dung được vẽ của điều khiển không?
Tôi nhận thấy rằng Thay đổi kích thước của điều khiển sẽ xóa nền.
Những điều đó không làm việc
- Overriding OnPaintBackground để làm gì cả. Hoặc chỉ cần gọi base.OnPaintBackground. Cùng một kết quả.
Bạn không phải làm mất hiệu lực toàn quyền kiểm soát của cha mẹ, mà chỉ là vùng tương ứng với điều khiển người dùng: this.Parent.Invalidate (this.ClientRectangle, true); –
@Eric: Cảm ơn mẹo. Tôi nghĩ rằng tôi có thể đã làm điều đó! – snicker
Thao tác này sẽ không hoạt động đúng cách trừ khi điều khiển người dùng ở vị trí (0,0). Bạn phải làm mất hiệu lực vùng cha được bao phủ bởi usercontrol và sử dụng các tọa độ cha. Ngoài ra, nếu usercontrol có một khu vực không phải khách hàng trong suốt, khu vực này cũng sẽ không bị vô hiệu hóa. Tôi muốn đi cho 'this.Parent.Invalidate (hình chữ nhật mới (this.Location, this.Size), true);' – takrl