Mencipta Tindanan Separuh Lutsinar pada Borang Windows
Artikel ini menerangkan cara menindan imej separa lutsinar pada Borang Windows tanpa menghalang keterlihatan atau kefungsian kawalan anaknya. Kuncinya menggunakan borang telus berasingan yang diletakkan di atas.
Berikut ialah panduan langkah demi langkah:
Bangunkan Kelas Borang Tersuai:
Buat kelas baharu (cth., OverlayForm
) untuk mengurus tindanan. Kelas ini akan diwarisi daripada System.Windows.Forms.Form
. Sertakan using
pernyataan yang diperlukan:
<code class="language-csharp">using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices;</code>
Konfigurasikan Borang Tindanan:
Segera kelas OverlayForm
anda, nyatakan borang untuk tindanan (cth., mainForm
). Tetapkan sifatnya seperti berikut:
<code class="language-csharp">OverlayForm overlay = new OverlayForm(mainForm);</code>
BackColor
: Tetapkan kepada warna yang anda kehendaki (cth., Color.DarkGray
).Opacity
: Laraskan untuk mengawal ketelusan (cth., 0.30
untuk 30% kelegapan).FormBorderStyle
: Tetapkan kepada FormBorderStyle.None
untuk mengalih keluar sempadan.ControlBox
: Tetapkan kepada false
untuk menyembunyikan kotak kawalan.ShowInTaskbar
: Tetapkan kepada false
untuk menghalangnya daripada muncul dalam bar tugas.StartPosition
: Tetapkan kepada FormStartPosition.Manual
untuk kedudukan yang tepat.Kekalkan Penyegerakan:
Kendalikan peristiwa LocationChanged
dan ClientSizeChanged
dalam bentuk dasar (mainForm
) untuk memastikan kedudukan dan saiz bentuk tindanan dilaraskan secara dinamik.
Lumpuhkan Aero Transitions (Vista dan kemudian):
Untuk mengelakkan gangguan visual dengan kesan kaca Aero, lumpuhkannya menggunakan DwmSetWindowAttribute
(memerlukan System.Runtime.InteropServices
).
Urus Acara Penutup:
Apabila borang tindanan ditutup, pulihkan sebarang tetapan yang diubah suai pada borang asas dan dayakan semula peralihan Aero jika perlu.
Halang Pengaktifan Tindanan:
Timpa peristiwa OnActivated
borang tindanan untuk menghalangnya daripada mendapat fokus dan sebaliknya mengubah hala fokus ke bentuk asas.
Pelaksanaan:
Tunjukkan dan sembunyikan tindanan seperti yang diperlukan menggunakan kaedah overlay.Show()
dan overlay.Close()
.
Kaedah ini menyediakan tindanan separa lutsinar tanpa mengganggu kebolehgunaan kawalan anak borang asas. Ingat untuk mengendalikan kemungkinan pengecualian dan kes tepi untuk penyelesaian yang mantap.
Atas ialah kandungan terperinci Bagaimana untuk Melapisi Imej Separuh Lutsinar pada Borang Windows Sambil Mengekalkan Keterlihatan Kawalan Kanak-kanak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!