Этот вопрос казался мне очень интригующим, никогда он это не заметил, что в WindowsForms, у матовости только есть она Form
и что получает в наследство ее в контроль, который в ней он содержит (она мне кажется очень большой ошибкой со стороны, как справляется это) даже в MSDN на Form. Opacity говорит:
Opacity свойство позволяет ему определять уровень прозрачности формуляра и Вашего контроля.
Итак, ища, экспериментируя и экспериментируя, я нашел одну альтернативной (для моего вкуса он полностью не является убедительным, но одна "решил", что возможно использовать и служить, в зависимости от которого ты искал).
Вышеупомянутое решение находится в этой теме в StackOverflow на английском:
Идея состоит в том, чтобы создавать два Form
, один, где ты изменишь свойство Opactity
, другой, где менять себе свойство TransparencyKey
(здесь я оставляю информацию об этом контроле). Первый будет тем, который прозрачности и второго, будет содержать контроль и будет тем, который проконтролирует движение двух Forms
.
FormOpacity
Это будет Форм Васио, что ты только изменишь ему propidad Opacity
, в Design или в коде, кроме того инстанции FormControles
:
public FormOpacity()
{
InitializeComponent();
Opacity = 0.5;
FormControles f = new FormControles(this);
f.Show();
}
FormControles
Здесь у тебя, должно быть, есть весь твой контроль, должно быть, будь того же размера другого form, ты используешь TransparencyKey
, чтобы делать прозрачным фон и ты создашь событие Move
, для того, чтобы он всегда был назад FormOpacity
.
public Form1(Form backForm)
{
InitializeComponent();
this.backForm = backForm;
TransparencyKey = Color.FromArgb(255, 240, 240, 240); //color del Form
}
private Form backForm; //Variable para guardar el FormOpacity
private void Form1_Move(object sender, EventArgs e)
{
backForm.Location = Location;
}
Здесь тогда поскольку он остался бы.
В конце концов это было лучшее решение, которое я нашел, так как я попробовал encrustar Form внутри Другого, посмотрим он добивался того же эффекта, но с единственным окном, но я не имел успеха.
В конце концов, как я говорю тебе, правда, этот выбор мне не понравился, так как у него есть много проблем, как которые у тебя есть два окна, и да ты приуменьшаешь FormOpacity
уже ты не получаешь желанный эффект (Если ты приуменьшаешь FormControles да, приуменьшаются две), но я жду подайте тебя немного и помогите с твоей проблемой. Для меня это было бы решено способствуя тому, чтобы у каждого контроля было Ваше свойство Opacity
, но хороший, это уже не зависит от нас.
Ему возможно удаваться определяя BackColor
из определенного цвета и этого же самого цвета применять это как TransparencyKey , это внутри строителя нашего класса, который он увеличивает Form
:
public Form1()
{
InitializeComponent();
...
...
this.TransparencyKey = Color.Green;
this.BackColor = Color.Green;
}
С этим lograrГ-схвати то, что ты желаешь, прозрачный формуляр, но они не контролируй, что он содержит :
То же самое в VB.NET, инициализировали, мы определяем те же цвета:
Private Sub InitializeComponent()
...
...
Me.TransparencyKey = Color.Green
Me.BackColor = Color.Green
End Sub
и мы получаем:
Менять свойство Opacity
не функционирует в этом случае, добавьте ответ ранее, где возможно видеть.
Это способ делать это полностью прозрачным (меняя цвет ты можешь выбирать другие тоны):
public class TransparentPanel : Panel
{
protected override CreateParams CreateParams
{
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
return cp;
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
//base.OnPaintBackground(e);
}
}
, Скопированный этого post форума в inglГ©s: https://stackoverflow.com / questions / 4463363/how-can-i-set-the-opacity-or-transparency-of-a-panel-in-winforms