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!
- 1. Integracja Mercurial w Visual Studio 2005?
- 2. Czy można utworzyć przezroczyste płótno?
- 3. Profilowanie kodu w Visual Studio 2005
- 4. Jak mogę uruchomić Visual Studio 2005 na Windows 7?
- 5. Czy mogę ustawić Visual Studio 2005 tak, aby ignorował asercje w określonym regionie kodu podczas debugowania
- 6. Obejście dla Visual Studio 2005 C++ dziedziczenie bug
- 7. Visual Studio 2012 | 2015 Przyciski wcięcia
- 8. Czy istnieje zasób tablicy ciągów dla programu Visual C# 2005?
- 9. Jak zmienić wersję rozwiązania z Visual Studio 2010 na Visual Studio 2005?
- 10. Czy mogę utworzyć własny JIT \ Interpreter \ Compiler dla języka C# i używać go w Visual Studio?
- 11. Skąd pobrać Visual Studio Express 2005?
- 12. Czy mogę zaszyfrować plik w Visual Studio?
- 13. Czy można używać C# 4.0 z Visual Studio 2008?
- 14. Czy mogę otworzyć stare rozwiązania Visual Studio (2005,2008, 2010,2013) w Visual Studio 2015 bez aktualizacji projektów?
- 15. Przechwytywanie cout w oknie wyjściowym Visual Studio 2005?
- 16. wywoływanie funkcji podczas debugowania w programie Visual Studio 2005?
- 17. Kod operatora obslugi typu C++, który nie będzie kompilowany w Visual Studio 2012, ale działał dobrze w Visual Studio 2005
- 18. Czy mogę zmienić kursor edytora tekstu Visual Studio?
- 19. Gdzie jest <inttypes.h> w Visual Studio 2005?
- 20. Visual Studio - Generowanie UML z projektu C++
- 21. Czy mogę zmienić szablon komentarzy XML w Visual Studio?
- 22. Test jednostki C++ w Visual Studio 2012
- 23. Jak utworzyć DLL C przy użyciu Visual Studio 2012
- 24. Jak dodać plik WSDL do projektu programu Visual Studio 2005?
- 25. Visual Studio 2015: Nie można utworzyć nowego pustego projektu C++
- 26. Visual Studio 2005 nie obsługuje Sql Server 2008
- 27. Czy mogę utworzyć nowy folder z szablonem pozycji programu Visual Studio
- 28. Prefast z Visual Studio 2008
- 29. Czy mogę mieszać C++ i C w jednym projekcie w Visual Studio?
- 30. Gdzie mogę wprowadzić zależności DLL w projekcie Visual Studio C++?
Dzięki, amdfan. Zobaczę, czy uda mi się to uruchomić. – Sean