6

У меня есть пользовательский интерфейс, который требует размещения некоторых круглых кнопок в проекте C# с некоторыми данными позади них. Кнопки - System.Windows.Forms.buttons, и я использовал изображение GIF с прозрачностью для их создания. Однако прозрачные области не прозрачны. Я искал ссылки в Интернете, но не нашел предложений относительно того, как это сделать правильно. Есть некоторые упоминания о том, чтобы сделать это в Visual Studio 2008, но мне нужно сохранить этот проект в 2005 году. Любая помощь или предложение приветствуются.Могу ли я создавать прозрачные кнопки в Visual Studio 2005 с C#

ответ

1

Я уверен, что вам нужно использовать PNG с WinForms, чтобы получить прозрачность изображения. Я знаю, что успешно их использовал.

EDIT: Когда я использовал PNG, я накладывал их с помощью Image Control на Form1.BackgroundImage; Я не использовал их в пуговицах.

Я думаю, что лучше всего перейти от использования кнопки управления к управлению изображением. Вы также можете попробовать изменить стиль кнопки на плоскость (я думаю, что это был плоский, может быть, один из других стилей) и посмотреть, сможете ли вы получить такой эффект, который вы хотите.

+0

Спасибо, amdfan. Я посмотрю, смогу ли я заставить это работать. – Sean 2008-10-15 01:12:32

0

Вам необходимо установить свойство BackColor кнопки «Прозрачный».

Button1.BackColor = System.Drawing.Color.Transparent;

0

создать класс, полученный из кнопки, и поместить этот код.

protected override CreateParams CreateParams 
    { 
     get 
     { 
      const int WS_EX_TRANSPARENT = 0x20; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TRANSPARENT; 
      return cp; 
     } 
    } 

и метод создания

 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     this.BackColor = Color.Transparent; 
0

Я использую Visual Studio 2005 и попытался следующий ваш пример выше, но это не сработало (фрагмент кода в метод создания). У меня есть фон для моей формы, и я пытаюсь создать скошенные прозрачные кнопки.

В настоящее время вставляемый выше код делает мой фон прозрачным, а мои кнопки - все в белом цвете.

вот фрагмент моего кода

 Bitmap mainFormBackground = (Bitmap)Image.FromFile("background.jpg"); 
     this.BackgroundImage = mainFormBackground; 
     this.BackColor = Color.Black; 
     this.ForeColor = Color.White; 

Добавить несколько кнопок

 SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     this.BackColor = Color.Transparent; 

Я даже попытался

  btnName.BackColor = Color.Transpare; 

это тоже не сработало

1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Drawing; 

public class TransparentControl : Control 
{ 
    public TransparentControl() 
    { 
     SetStyle(ControlStyles.SupportsTransparentBackColor, true); 
     SetStyle(ControlStyles.Opaque, true); 
     SetStyle(ControlStyles.ResizeRedraw, true); 
     this.BackColor = Color.Transparent; 
    } 

    protected override void OnPaint(PaintEventArgs pevent) 
    { 
     Graphics g = pevent.Graphics; 
     g.DrawRectangle(Pens.Black, this.ClientRectangle); 
    } 


    protected override void OnPaintBackground(PaintEventArgs pevent) 
    { 
     // don't call the base class 
     //base.OnPaintBackground(pevent); 
    } 


    protected override CreateParams CreateParams 
    { 
     get 
     { 
      const int WS_EX_TRANSPARENT = 0x20; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TRANSPARENT; 
      return cp; 
     } 
    } 

    // rest of class here... 
} 
1

Попробуйте это:

 Bitmap temp = new Bitmap(button1.Image); 

     temp.MakeTransparent(Color.Black); //your transparent color, in this case black 

     button1.Image = (Image) Logo; 

     temp.Dispose(); 

     temp = null; 
1

Просто установите кнопку в FlatStyle property для "Flat" & hellip; и вуаля! Я знаю, что это работает с PNG, но я не тестировал его с помощью GIF.

0

Следующий ответ проверяется в Visual Studio 2012 и работает с форматом backgroundImage BMP, GIF, PNG, а также JPG; созданный MS Paint.

Чтобы сделать фон виден через кнопку:

Перейти к окну свойств кнопки.Затем измените FlatStyle и BackColor, как показано на рисунке ниже:

The FlatStyle is to be chosen as Flat

The color is to be chosen from Web Tab

Примечание: цвет должен быть выбран из веб-вкладок и FlatStyle должен быть выбран в качестве Flat.

Но после этого кнопка будет прозрачной, если мышь не наводится, или она не выбрана или не нажата. При этом условии он будет в некотором непрозрачном цвете. Если вы хотите сделать его прозрачным, следуйте следующим изображениям и измените соответствующие цвета на прозрачные, как раньше. Цвета, которые необходимо изменить: «MouseOverBackColor» & «MouseDownBackColor».

enter image description here

enter image description here

Примечание: Если вы выбираете всегда прозрачны, как показано на рисунке, не будет никаких изменений во внешнем виде кнопки в то время как она будет в действии!

Надеюсь, это поможет вам.

Удачи!