6

Mam interfejs użytkownika, który wymaga umieszczenia niektórych okrągłych przycisków w projekcie C# z pewnymi danymi za nimi. Przyciski są System.Windows.Forms.buttons i użyłem obrazu GIF z przezroczystością, aby je utworzyć. Jednak obszary przezroczyste nie są przezroczyste. Szukałem referencji online, ale nie znalazłem żadnych sugestii, jak to zrobić poprawnie. Jest kilka wzmianek o tym, jak to zrobić w Visual Studio 2008, ale muszę zachować ten projekt w 2005 roku. Każda pomoc lub sugestia jest doceniana.Czy mogę utworzyć przezroczyste przyciski w Visual Studio 2005 z C#

Odpowiedz

1

Jestem prawie pewien, że do uzyskania przezroczystości obrazu potrzebne są pliki PNG z WinForm. Wiem, że użyłem ich z powodzeniem.

EDYCJA: Kiedy użyłem PNG, nałożyłem je z kontrolą obrazu na Form1.BackgroundImage; Nie używałem ich w przyciskach.

Myślę, że najlepiej jest przejść z użycia przycisku sterowania do sterowania obrazem. Możesz także spróbować zmienić styl przycisku na płaski (myślę, że był płaski, może jeden z innych stylów) i zobaczyć, czy możesz uzyskać efekt, który chcesz w ten sposób.

+0

Dzięki, amdfan. Zobaczę, czy uda mi się to uruchomić. – Sean

0

Musisz ustawić właściwość BackColor przycisku na "Transparent".

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

0

utworzyć klasę pochodną od przycisku i umieścić ten kod.

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

i stworzyć metodę

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

Używam Visual Studio 2005 i wypróbowane następujące swój przykład powyżej, ale to nie działa (urywek w stworzenie metody). Mam tło dla mojego formularza i próbuję utworzyć fazowane przezroczyste przyciski.

Obecnie wstawianie powyższego kodu powoduje, że moje tło jest przezroczyste, a moje przyciski - białe.

tutaj jest urywek mojego kodu

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

Dodaj kilka przycisków

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

Próbowałem nawet

  btnName.BackColor = Color.Transpare; 

to też nie działa

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

Spróbuj tego:

 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

Wystarczy ustawić przycisk w FlatStyle property "mieszkanie" & hellip; i voila! Wiem, że działa to z plikami PNG, ale nie testowałem tego z GIF-ami.

0

Następująca odpowiedź jest zweryfikowana w Visual Studio 2012 i działa z formatem backgroundImage BMP, GIF, PNG oraz JPG; stworzony przez MS Paint.

Aby dokonać tle widoczny za pośrednictwem przycisku:

idź do okna Właściwości przycisku.Następnie zmień FlatStyle i BackColor jak pokazano na rysunku poniżej:

The FlatStyle is to be chosen as Flat

The color is to be chosen from Web Tab

Uwaga: kolor ma być wybrany spośród Tab WWW i FlatStyle ma być wybrany jako Flat.

Po tym przycisku przycisk będzie przezroczysty, dopóki mysz nie zostanie najechana kursorem lub zostanie zaznaczona lub naciśnięta. Pod tym warunkiem będzie w innym nieprzejrzystym kolorze. Jeśli chcesz, aby było zawsze przezroczyste, wykonaj następujące obrazy i zmień odpowiednie kolory na przezroczyste, tak jak poprzednio. Kolory do zmiany to: "MouseOverBackColor" & "MouseDownBackColor".

enter image description here

enter image description here

Uwaga: Jeśli wybierzesz zawsze przejrzyste, jak widać, nie będzie żadnych zmian w wyglądzie przycisku natomiast będzie w akcji!

Mam nadzieję, że ci to pomoże.

Powodzenia!

Powiązane problemy