Iny dizajn okna
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Iny dizajn okna
Chcel by som v C# spravit apolikaciu, ktora nebude mat klasicke okno ale chcel bz som aby vyzerala ako cajnik, proste namiesto okna pouzit nejaky obrazok, najlepsie by bolo keby cez ucho cajnika bolo vidiet pozadie,poradte ako?
Re: Iny dizajn okna
Poznám tri spôsoby:harrison314 napísal:...
1.) (ľahší) http://www.thescarms.com/dotnet/IrregularForm.aspx (tu si len vložíš obrázok nejakého čajníka)
2.) (stredný) Naštuduj si GraphicsPath a Region ( http://www.java2s.com/Code/CSharp/GUI-W ... -Forms.htm ). Definuješ si vlastné body tvoriace čajník.
3.) (ťažší) Vlastný form, pri ktorom vytvoríš vlastné podmienky (udalosti, ...) pre formulár a to prepísaním určitých metód podľa seba, ako napr. metóda WndProc. Pri tomto spôsobe si tak isto sám spravuješ udalosti (ako kliknutie myšou, pohyb myši, prekreslenie okna (klientská/neklientská oblasť), ...). Tu je tiež použitý druhý spôsob. ( http://geekswithblogs.net/kobush/articl ... Forms.aspx )
nejaké príklady, gugl:
custom windows forms c#
irregular shaped Windows Form C#
custom border forms c#
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Diky za pomoc, ale prvy (lahky) sposob mi nejde
zobrazi okno v ktorom je na pozadi dany obrazok z priehladmym pozadim,
tuto vec som nasiel aj na inych forach ako funkcnu, netusim v com je chyba.
Skusal som aj menit styl this.FormBorderStyle
Veci z druhe stredne tazkeho sposobu idu, mam odskusanu aj prihladnost aj text na pozadi.[/b]
Kód: Vybrať všetko
Bitmap bmp = new Bitmap("cajnik.bmp");
bmp.MakeTransparent(bmp.GetPixel(1,1));
this.BackgroundImage = bmp;
this.TransparencyKey = bmp.GetPixel(1,1);
tuto vec som nasiel aj na inych forach ako funkcnu, netusim v com je chyba.
Skusal som aj menit styl this.FormBorderStyle
Veci z druhe stredne tazkeho sposobu idu, mam odskusanu aj prihladnost aj text na pozadi.[/b]
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Takze tu su overene vysledky mojho patrania
Priehladnost okna sa nastavuje cez
pricom 0.0 je uplne priehladne a 1.0 je uplne viditelne.
Obrazok namiesto okna dosiahnete
pricom pixel na pozicii 1,1 ma farbu ktoru chceme zpriehladnit.
Text namiesto okna
A na zaver okno v tvare napriklad elipsy, tvar si urcime triedov GraphicsPath
K tomuto je dobre vytvorit si vlastne udalosti , pre minimalizaciu a zavretie okna.
Priehladnost okna sa nastavuje cez
Kód: Vybrať všetko
this.Opacity = 0.5;
Obrazok namiesto okna dosiahnete
Kód: Vybrať všetko
Bitmap bmp = new Bitmap("macka.bmp");
bmp.MakeTransparent(bmp.GetPixel(1, 1));
this.BackgroundImage = bmp;
this.TransparencyKey = this.BackColor;
this.FormBorderStyle = FormBorderStyle.None;
Text namiesto okna
Kód: Vybrať všetko
this.BackColor = Color.Red;
GraphicsPath pa = new GraphicsPath();
pa.AddString("Hello world", Font.FontFamily, 1, 75, new Point(0, 15), new StringFormat());
this.Region = new Region(pa);
Kód: Vybrať všetko
this.BackColor = Color.Green;
GraphicsPath gp = new GraphicsPath();
gp.AddEllipse(100, 100, 200, 100);
this.Region = new Region(gp);