Khi thay đổi kích thước biểu mẫu có nhiều điều khiển, biểu mẫu có vẻ không ổn định do nhấp nháy. Một số mẹo để thay đổi kích thước hình thức mượt mà hơn là gì?Làm cách nào để làm cho biểu mẫu của tôi thay đổi kích thước một cách trơn tru hơn?
Trả lời
procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
Self.DisableAlign;
end;
procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
Self.EnableAlign;
end;
Thử sử dụng WM_SETREDRAW (not LockWindowUpdate).
Bạn cũng có thể xem DeferWindowPos.
+1, cả hai phần tư vấn rất tốt trong chính nó. Đây có lẽ sẽ không giúp đỡ với một hình thức VCL phức tạp bằng cách sử dụng liên kết, kiểm soát lồng nhau và như vậy, mặc dù. 'DeferWindowPos()' là giá trị thử nghiệm cho vị trí thủ công trong trình xử lý 'OnResize'. – mghie
Các biểu mẫu phức tạp thường được tạo thành từ các bảng lồng nhau và quá trình sơn lại có thể gây nhấp nháy. Nếu đây là trường hợp với dự án của bạn có hai giải pháp dễ dàng mà thể giúp đỡ:
- Vô hiệu hóa tài sản
FullRepaint
trên tấm của bạn. - Bật thuộc tính
DoubleBuffered
trên biểu mẫu của bạn. Bạn sẽ không tìm thấy thuộc tính này trên thanh tra đối tượng, vì vậy hãy đặtDoubleBuffered := true;
trong FormCreate.
Lưu ý rằng 'DoubleBuffered' giao dịch ít nhấp nháy hơn cho tốc độ cập nhật chậm hơn, một hiệu ứng có thể nhận thấy trên màn hình lớn, nơi thay đổi kích thước có thể trở thành" tăng vọt "với kích thước cửa sổ lớn hơn. – mghie
DoubleBuffered về cơ bản làm cho ứng dụng của bạn vô dụng trên Citrix và Terminal Server. –
>>> "DoubleBuffered về cơ bản làm cho ứng dụng của bạn vô dụng trên Citrix và Terminal Server" Bạn có thể chỉ định tại sao không? – Alex
Tôi đã có khoảng này như sau:
- Trong 'OnResize' sự kiện của mẫu đơn, có một thói quen để ẩn tất cả các điều khiển con và sau đó bắt đầu một giờ với một đánh dấu khoảng 500ms .
- Khi bộ hẹn giờ kích hoạt, tắt nó và sau đó đặt tất cả các điều khiển con để hiển thị.
Bằng cách chơi xung quanh với hoạt động này, bạn sẽ nhận được biểu mẫu trống khi bạn đang định kích thước, nhưng sau đó tự điền gọn khi bạn 'buông'.
Bri
Tôi nghĩ bạn sẽ thấy rằng việc xử lý các thông báo di chuyển nhập/thoát (với sửa đổi được ghi chú trong phần bình luận ở trên) sẽ tạo ra trải nghiệm người dùng tốt hơn vì bạn ít nhất có thể thấy biểu mẫu (chưa được) trong khi bạn thay đổi kích thước cửa sổ. – frogb
tôi tránh nhấp nháy bằng cách canh không quá phi alClient
thành phần mỗi phụ huynh, luôn luôn đi kèm với một alClient
(ví dụ một TPanel
) để chứa tất cả các thành phần khác. Nhóm chúng trong các bảng không có đường viền.
Giả sử bạn muốn sắp xếp ba thứ: alLeft
, alTop
và alClient
cho chế độ xem chính. Dont làm điều này: Form alTop alLeft alClient // your main view
Nhưng thay vì nhúng này như sau: Form alTop alClient // panel to avoid flicker alLeft alClient // your main view
Cùng câu chuyện cho nhúng vài alTop
yếu tố.
- 1. MKOverlay không thay đổi kích thước trơn tru
- 2. jQuery thay đổi trơn tru của innerHTML
- 3. Làm cách nào để thay đổi kích thước bảng của tôi khi thay đổi kích thước biểu mẫu chính trong ứng dụng biểu mẫu winforms?
- 4. Cách tự động thay đổi kích thước lưới khi biểu mẫu được thay đổi kích thước?
- 5. Làm cách nào để sửa kích thước biểu mẫu trong ứng dụng Biểu mẫu Windows C và không cho phép người dùng thay đổi kích thước của nó?
- 6. Làm cách nào để giữ cho WPF GridSplitter thay đổi kích thước lưới của tôi?
- 7. Làm cách nào để thay đổi kích thước của UICollectionView?
- 8. Làm cách nào để ngăn người dùng thay đổi kích thước biểu mẫu?
- 9. Làm cách nào để di chuyển thanh tìm kiếm trên Android một cách trơn tru?
- 10. Thay đổi kích thước điều khiển bằng biểu mẫu Thay đổi kích thước
- 11. Làm cách nào để có được một DataGrid để cuộn trơn tru khi Hàng cao hơn Khung nhìn?
- 12. Làm thế nào để tải Listview "trơn tru" trong android
- 13. Làm thế nào để làm cho wx.TextEntryDialog lớn hơn và thay đổi kích thước
- 14. Làm cách nào để thay đổi kích thước ảnh thành một kích thước tệp cụ thể?
- 15. Làm thế nào để thay đổi kích thước một NumericVector?
- 16. (Java LibGDX) Làm cách nào để thay đổi kích thước họa tiết của tôi trong LibGDX?
- 17. Tôi làm cách nào để thay đổi/giảm kích thước trình quay số của Android?
- 18. Cách tốt nhất để làm cho winforms có thể thay đổi kích thước?
- 19. thay đổi kích thước và điều chỉnh điều khiển biểu mẫu theo biểu mẫu đổi kích thước
- 20. Làm thế nào bạn có thể nhận được gợi ý cho các ô trong TStringGrid xuất hiện trơn tru hơn?
- 21. Tôi làm cách nào để thay đổi kích thước hình ảnh mà không kéo dài?
- 22. Animate UISlider trơn tru
- 23. JScrollPane - Cuộn trơn tru
- 24. Làm cách nào để thay đổi kích thước phông chữ của cột trong bảng?
- 25. Ảnh chụp màn hình của biểu mẫu có kích thước lớn hơn kích thước màn hình
- 26. Làm cách nào để tự động thay đổi kích thước div thành kích thước nội dung của nó khi nội dung của div đã thay đổi?
- 27. Làm thế nào để thay đổi kích thước một QMainWindow thành kích thước tối thiểu
- 28. Làm thế nào để Hoàn tác & Làm lại một đường trơn tru trong iPhone?
- 29. Iteratively trơn tru một đường cong
- 30. Làm cách nào để tạo hoạt ảnh Thay đổi kích thước cho giai đoạn JavaFX?
Đó là tốt tại ngăn ngừa nhấp nháy, nhưng nó cũng có vẻ để ngăn chặn sự liên kết hoàn toàn. Tôi đã thêm một cuộc gọi không hợp lệ sau khi bật căn chỉnh: không hoàn hảo, vì bạn không thể thấy chính xác hiệu ứng mà kích thước biểu mẫu sẽ có, nhưng ít nhất nó loại bỏ tất cả nhấp nháy trên biểu mẫu nhiều bảng phức tạp. – frogb
thủ tục WMEnterSizeMove (var Tin nhắn: TWMMove); tin nhắn WM_ENTERSIZEMOVE; quy trình WMExitSizeMove (var Tin nhắn: TWMMove); tin nhắn WM_EXITSIZEMOVE; không kích hoạt các sự kiện aproporiate. Trên thực tế quên đề cập đến nó là một khung và không phải là một hình thức nhưng tôi đoán rằng nó sẽ có được như vậy. – zz1433