Iny dizajn okna

Programovacie jazyky, rady, poradňa...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Iny dizajn okna

Príspevok od používateľa harrison314 »

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?
bart11
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 91
Registrovaný: 13 okt 2006, 20:11
Kontaktovať používateľa:

Re: Iny dizajn okna

Príspevok od používateľa bart11 »

harrison314 napísal:...
Poznám tri spôsoby:
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
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Príspevok od používateľa harrison314 »

Diky za pomoc, ale prvy (lahky) sposob mi nejde

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);

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]
bart11
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 91
Registrovaný: 13 okt 2006, 20:11
Kontaktovať používateľa:

Príspevok od používateľa bart11 »

Neviem, skúsil som to:
1.) Nastavil som vlastnosť pozadie Formu ako Black (BackColor)
2.) vlastnosť TransparencyKey som dal farbu Black
3.) a vlastnosť FormBorderStyle na none
4.) a to je všetko

Pravdepodobne je problém u teba bod 1 a 2
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Príspevok od používateľa harrison314 »

Takze tu su overene vysledky mojho patrania

Priehladnost okna sa nastavuje cez

Kód: Vybrať všetko

           this.Opacity = 0.5;
pricom 0.0 je uplne priehladne a 1.0 je uplne viditelne.

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;
pricom pixel na pozicii 1,1 ma farbu ktoru chceme zpriehladnit.

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);
A na zaver okno v tvare napriklad elipsy, tvar si urcime triedov GraphicsPath

Kód: Vybrať všetko

            this.BackColor = Color.Green;
            GraphicsPath gp = new GraphicsPath();
            gp.AddEllipse(100, 100, 200, 100);
            this.Region = new Region(gp);
K tomuto je dobre vytvorit si vlastne udalosti , pre minimalizaciu a zavretie okna.
Napísať odpoveď