2009-10-11 17 views

cevap

7

Sana şeffaflık uygulayabilirsiniz sanmıyorum form ziyade komple, bütün formun sadece bir kısmına (daha doğrusu Opaklık adlandırılan). Bununla birlikte, bu şeklin çeşitli kısımlarının saydam olmasıyla, özel şekilli bir form (yani dikdörtgen olmayan) oldukça kolay bir şekilde oluşturabilirsiniz. Gerçekleştirmeye çalıştığınız tam "görünüme" bağlı olarak, bu elde edeceğiniz en yakın nokta olabilir.

kendi özel şekilli bir form oluşturmak için bu bağlantıların bir göz atın:

Creating Custom Shaped Windows Forms in .NET
Custom shaped form with a drop down in C#
Shaped Windows Forms and Controls in Visual Studio .NET

yalnızca diğer alternatif ayarlanır bunlardan biri iki biçimini görüntülemek için olabilir kısmen şeffaf olmak. İkinci formun "ana" formun hemen yanında konumlandırıldığından emin olun ve kullanıcı "ana" formu taşıdığında/yeniden boyutlandırdığında orantılı olarak hareket ettirilir/yeniden boyutlandırılır. Her ne kadar bu iki biçim olsa da, kullanıcıya bakması, aslında sadece bir form olması, ancak çekilmesi oldukça zor olabileceği ve mükemmel bir çözüm olmayacağı (ancak "yeterince iyi" olabileceği) göz önüne alınmalıdır. tam ihtiyaçlarınız üzerine).

0

Bu, p/invoke çağrıları ve geçici çözümlerin gereksiz kullanımı olmadan WinForms ile bunun mümkün olup olmadığından emin değilim.

Windows Presentation Foundation'ı (WPF) kullanmak yerine, bu tür efektlerin uygulanması neredeyse önemsizdir. Basit

+0

Neden -1? Cevabımdaki neydi? WinForms'da şeffaflığı yalnızca tam formda ancak parçaların üzerine yerleştiremezsiniz, bu yüzden kolayca yapılabilir olduğundan şüpheliyim.Azalmaya karşı koymak için – codymanix

+0

+1. Bunu WinForms'da yapmak çok zor değil, ama * biraz hacky ve WPF * * bu tür bir şey için daha iyi (MS mühendisleri sizin için her şeyi yaparken daha az eğlenceli olsa da). – MusiGenesis

+0

En azından senin "daha az eğlenceli" argüman çok tartışmalı olarak kabul edilebilir .. – codymanix

0

:

myForm.Opacity = 80; // Change 80 with your value 
+2

@FBSC - Bu tam formun opaklığını değiştirecektir. Asıl soruya cevap veren kişi, sadece formun bir kısmının opaklığını değiştirmek, tüm formu değil, istediği gibi geliyor. – CraigTP

+0

Üzgünüm, şu "bölüm" atladım: S – FBSC

5

Bunu, formunuzda tam olarak saydam bir pencere oluşturarak ve tam saydam pencerenin üzerinde yarı saydam bir formda kayan ile yapabilirsiniz.

Önce, ana formunuzun TransparencyKey'ini Color.Red olarak ayarlayın, ardından formda panel1 adında bir Panel yerleştirin ve BackColor'u Kırmızı'ya ayarlayın. Bu tamamen şeffaf "pencere" yaratacaktır. Böyle bir form düzeyi Formu başvuru oluşturun:

private Form _floater; 

Sonra, ana formun Load olayı bu kodu koymak:

_floater = new Form(); 
_floater.ShowInTaskbar = false; 
_floater.FormBorderStyle = FormBorderStyle.None; 
_floater.Opacity = .5; 
_floater.Size = panel1.Size; 
_floater.StartPosition = FormStartPosition.Manual; 
_floater.Location = panel1.PointToScreen(new Point(0, 0)); 
_floater.Show(this); 

Son olarak, ana formun Taşı olayı bu kodu koymak:

Buradaki tek sorun, kullanıcı yarı saydam "pencere" ye tıklarsa, ikinci form odağı alacak, böylece ana formunuzun TitleBar'ı grileştirilmiş olacaktır. Bir formdaki bu yarı saydam pencereyle örnek bir uygulama çalıştırmak için

.

İlgili konular