Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Kawalan Pekeliling Lutsinar dengan Teks Yang Tidak Bertindih Kawalan Lain?

Bagaimana untuk Mencipta Kawalan Pekeliling Lutsinar dengan Teks Yang Tidak Bertindih Kawalan Lain?

Susan Sarandon
Susan Sarandonasal
2025-01-22 15:56:09333semak imbas

How to Create a Translucent Circular Control with Text That Doesn't Overlap Other Controls?

Kawalan bulatan lut sinar dengan teks

Soalan

Dalam projek, saya perlu menambah kawalan bulatan dan memaparkan beberapa teks di tengah.

Masalah saya ialah bulatan itu terlalu kecil dan apabila saya mengubah saiznya, ia bertindih dengan kawalan lain. Saya mahu bulatan itu sama lebar dengan segi empat sama.

Atau, bagaimana untuk menjadikan latar belakang kawalan telus?

Penyelesaian

Ini ialah kawalan tersuai yang diperoleh daripada Kawalan yang boleh dibuat lut sinar.

Antara muka ialah bulatan berwarna yang boleh mengandungi beberapa nombor.

Kawalan ini mendedahkan sifat tersuai berikut:

Kelegapan : Tahap kelegapan latar belakang kawalan [0, 255]
InnerPadding (lapik dalam) : Jarak antara segi empat tepat dalam yang mentakrifkan sempadan bulatan dan sempadan kawalan.
FontPadding (font padding) : Jarak antara teks dan segi empat tepat dalam.

Mencapai ketelusan dengan mengatasi CreateParams dan kemudian menetapkan ExStyle |= WS_EX_TRANSPARENT;

Kaedah Control.SetStyle() digunakan untuk mengubah suai tingkah laku kawalan, tambahkan ControlStyles berikut:

ControlStyles.Opaque: Menghalang latar belakang kawalan daripada dilukis supaya ia tidak diurus oleh sistem. Digunakan bersama CreateParams, menetapkan gaya lanjutan kawalan kepada WS_EX_TRANSPARENT menjadikan kawalan telus sepenuhnya.
ControlStyles.SupportsTransparentBackColor: Kawalan menerima nilai alfa untuk warna latar belakangnya. Jika anda juga tidak menetapkan ControlStyles.UserPaint, ia tidak akan digunakan untuk mensimulasikan ketelusan. Kami akan melakukannya sendiri melalui kaedah lain.

Untuk melihat cara ia berfungsi, buat fail kelas baharu, gantikan semua kod di dalamnya dengan kod ini, simpan ruang nama dan bina projek/penyelesaian.

Kawalan tersuai baharu akan muncul dalam kotak alat. Seret dan lepaskan ke dalam borang. Ubah suai sifat tersuainya mengikut keperluan.

Perwakilan visual kawalan:

Nota dan Penafian

  • Ini ialah kawalan prototaip dan tidak mempunyai pereka bentuk tersuai (tidak boleh siarkan di sini, terlalu banyak kod, juga terikat pada rangka kerja).
  • Seperti yang diterangkan di sini, ia boleh bertindih sepenuhnya dengan kawalan lain dalam bentuk atau bekas lain. Beberapa pertindihan tidak dikendalikan dalam pelaksanaan yang dipermudahkan ini.
  • Fon dikodkan keras kepada Segoe UI kerana fon ini mempunyai garis dasar yang memudahkan peletakan teks di tengah-tengah kawasan bulatan.
  • Fon lain mempunyai garis dasar yang berbeza dan memerlukan pemprosesan yang lebih kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kawalan Pekeliling Lutsinar dengan Teks Yang Tidak Bertindih Kawalan Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn