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
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.
Musisz ustawić właściwość BackColor przycisku na "Transparent".
Button1.BackColor = System.Drawing.Color.Transparent;
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;
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
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...
}
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;
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.
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:
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".
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!
Dzięki, amdfan. Zobaczę, czy uda mi się to uruchomić. – Sean