Dynamické rozložení ovládacích prvků v okně – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dynamické rozložení ovládacích prvků v okně – .NET – Fórum – Programujte.comDynamické rozložení ovládacích prvků v okně – .NET – Fórum – Programujte.com

 

Kubas1290
Stálý člen
14. 9. 2021   #1
-
0
-

Ahoj,

mám problém s přijitím na to jak vytvořit dynamické okno, tak aby když uživatel změní velikost okna, tak aby se všechny prvky jako jsou TextBoxy, tlačítka a labely přizpůsobili novému rozlišení, tudíž aby se bud zmenšili či zvětšili. 

Se získání aktuální velikosti okna nemám problém:

int windowWith = Program.Game.Window.ClientBounds.Width;
int windowHeight = Program.Game.Window.ClientBounds.Height;

Ale můj problém nastává už při umístění prvních dvou prvků, konkrétně labelu a textBoxu:

Label si umístím na pozici, která bude odpovídat 5ti % z celkové šířky okna

label3.Left = (windowWith / 100) * 5;
label3.Id = "label1";
label3.Text = "Zadej svůj nick:";

Nyní vedle tohoto labelu bych chtěl umístit textBox, ale nevím jak můžu určit Y souřadnici kam jej umístit, tak aby se tyto prvky vzájemně nepřekrývali, ale zároven aby od sebe nebyly příliš daleko?

Poté oba tyto prvky dávám do panelu, který následně vykreslím na okno.

Jak prosím mohu zjistit šířku, kterou zabírá label s textem?

Případně existuje nějaký lepší způsob jak okno vytvořit dynamické?

Díky moc :-))

Nahlásit jako SPAM
IP: 62.141.28.–
Mutagen
~ Anonymní uživatel
513 příspěvků
15. 9. 2021   #2
-
+1
-
Zajímavé

#1 Kubas129
Já na design aplikace tak aby byla scalovatelná použivám rozložení přes panely s aligmentem, takže při rozšíření/zmenšení okna se vše drží přesně jak má.

Kdybys to dělal v Unity (jak jsem ti jednou říkal, že by to bylo asi jednoduší) tak tam stačí 2-3 řádky co ti vypočítá poměr okna a nascaluje canvas s tvým UI.

Pokud ti jde o ruční nsatavování pozic u komponent tak vždy musíš počítat s komponentou za kterou to chceš dát. Takže pokud máš label3 na pozici podle tvého výpočtu, tak musíš do dalšího výpočtu ho zařadit

textbox.Left = label3.Left + label3.width + mezeraMeziKomponentama

Nahlásit jako SPAM
IP: 185.138.71.–
peter
~ Anonymní uživatel
3706 příspěvků
15. 9. 2021   #3
-
+1
-
Zajímavé

Muzes to take resit podobne, jak to resi webove stranky (google = bootstrap).
Maji 12 sloupcovy layout a do nej to vse napasuji.
Maji rozdeleni podle 5 sirek okna, typ zarizeni a tomu prizpusobuji rozmery prvku.
Maji mechanizmus, ktery s sirkou 12 sklada pod sebe. A dokud neni soucet sirky 12 prvku, tak to sklada vedle sebe. Pri zmene sirky stranky se urci, zda se jedna o xm, sm lg nebo xl a ten se pouzije na nastaveni sirky.

pr. xm-12 sm-12 md-6 lg-6 xl-3 (extra small 12 sloupcu sirka prvku, small)

Funguje to skvele, az na nektere pripady. Podobne je treba pracovat s vyskou prvku, pokud chces nektere mensi veci skladat pod sebe.
Smula, ze tohle asi jednoduse v c# nebo, v cem to delas, neudelas.

Takze je treba to resit, jak psal Mutagen, stanovit si sirku mezery, treba v procentech nebo pixelech pro 4 sirky stranky (v podstate takovy sloupec). Bootstrap tam take resi mezery mezi policky ve sloupcich.
No, zkratka muzes pouzit tabulkovy layout.
Nevim, zda ma c# nejaky automaticky nastroj na prepocitavani nebo si ho musis napsat.


Nebo pouzit pevne rozlozeni v pixelech a jen to vynasobit, kdyz sirka prekroci hodnotu xs, sm, md, lg, xl. Vyhoda je, ze sledujes jen rozmer okna a prepocitavani vyvolas jen jednou za cas.

Nahlásit jako SPAM
IP: 2001:718:2601:258:25d0:8698:1e9b:8deb...–
JerryM0
Super člen
15. 9. 2021   #4
-
+1
-
Zajímavé

a v čem to programuješ ? MS VS 2019 C# WPF ???

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
Kubas1290
Stálý člen
15. 9. 2021   #5
-
0
-

#4 JerryM
v tomto :D

https://github.com/rds1983/Myra/wiki

Nahlásit jako SPAM
IP: 62.141.28.–
JerryM0
Super člen
15. 9. 2021   #6
-
0
-

tak to neznám ... vypadá to na MS VS 2019 C# + WPF ale co je to Myra .. to nevim

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
Kubas1290
Stálý člen
15. 9. 2021   #7
-
0
-

#6 JerryM
to používám v tom Monogame - XNA

Nahlásit jako SPAM
IP: 62.141.28.–
JerryM0
Super člen
15. 9. 2021   #8
-
0
-

aha XNA ... to je ale už spoustu let mrtvá technologie od Microsoftu .. teď je Unity pro C# a Vylkan jako náhrada za DirectX a je to multiplatformní ...

jestli chceš GUI prvky používej Telerik (pro WPF) nebo DevExpress (WPF) ....

to tvoje dynamický zmenšování/zvětšování umí jen WPF a jestli to umí XNA 3.x, 4.x to bohužel nevim ..

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
JerryM0
Super člen
15. 9. 2021   #9
-
0
-
Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
Kubas1290
Stálý člen
15. 9. 2021   #10
-
0
-

#9 JerryM
o tom Vulkanu slyším poprvé, to je taky nějaká engine na vývoj her?

Nahlásit jako SPAM
IP: 62.141.28.–
Mutagen
~ Anonymní uživatel
513 příspěvků
15. 9. 2021   #11
-
+1
-
Zajímavé

#10 Kubas129
Já být tebou tak přejdu na Unity, já sice o Vulkanu nevím nic, ale v Unity už nějaký ten pátek dělám a za mě top i na mobily

Nahlásit jako SPAM
IP: 185.138.71.–
JerryM0
Super člen
15. 9. 2021   #12
-
0
-

#10 Kubas129
Vulkan - nový multiplatformní 3D/2D engine -  https://www.root.cz/vyhledavani/?…; a je to náhrada za MS Direct3D. Je poměrně složitý. Funguje jak na mobilech tak i na Windows atd. Vulkan by měl být nástupcem za OpenGL což je hlavní herní engine pro mobilní zařízení. Vulkan je hlavně pro C++ a Céčko. Se C# se zatím nepočítá.

Unity je skvělej na 3D hry a 2D hry a je multiplatformní a dělá se v něm v C#. Můžeš programovat i z MS VS, ale Unity má vlastní vývojové prostředí. t.j. je to něco jiného než XNA.

budeš si muset vybrat....každopádně Unity má obrovsou základnu a skvělou podporu ..

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
JerryM0
Super člen
15. 9. 2021   #13
-
0
-

a hele první wrapper pro Vulkan

https://github.com/mono/VulkanSharp

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
JerryM0
Super člen
15. 9. 2021   #14
-
0
-

Vulkan je spíš pro profesionální studia

https://www.vulkan.org/

ale je fakt, že když začneš .. a řekněme tak za 5-6 let se to naučíš tak si budeš moct založit svoje vlastní vývojové studio v čr ... asi v Brně ..  a taky časem v Praze

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
Kubas1290
Stálý člen
15. 9. 2021   #15
-
0
-

Vypadá to dost zajímavě :-)

Nahlásit jako SPAM
IP: 62.141.28.–
JerryM0
Super člen
15. 9. 2021   #16
-
0
-

Vulkan je zajímavý, ale pro někoho komu je 20-25 .. ideálně 15 a chce se tim živit po zbytek života ..

pro někoho komu je 50 to už neni

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
15. 9. 2021   #17
-
0
-

#16 JerryM
Tak ted jsi mne uklidnil. Aspoň vím, čím se nemám zabývat  :)

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:dd64:d2a7:290b:89f8...–
JerryM0
Super člen
15. 9. 2021   #18
-
0
-

hm no začínat s programováním v C++/Vulkan v 50 je sebevražda ... i když ... :) :) :) :)  proč ne že :) :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
15. 9. 2021   #19
-
0
-

S C++ jsem začínal ve 33. Před 6 lety jsem přešel na C# a od té doby pro Windows bych se k C++ nevracel.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:dd64:d2a7:290b:89f8...–
Kubas1290
Stálý člen
15. 9. 2021   #20
-
0
-
Nahlásit jako SPAM
IP: 62.141.28.–
JerryM0
Super člen
15. 9. 2021   #21
-
+1
-
Zajímavé

grafických enginů je strašná spousta ... otázka spíš je jestli se tim uživíš ..

ono takový ASP .NET5 nebo Java ti vydělá mnohem víc než C++/DirectX .. aspoň tady v čr ...

PHYSICS ENGINES + GRAPHICS LIBRARIES

FARSEER PHYSICS  2D engine .NET

https://farseerphysics.codeplex.com/

Box 2D C/C++ Win32

http://box2d.org/

Unity 2D/3D .NET

http://unity3d.com/

Bullet Engine 3D C++ Win32

http://bulletphysics.org/wordpress/

Bullet Sharp 3D .NET

https://code.google.com/p/bulletsharp/

CSGL Graphics Library .NET C#

http://csgl.sourceforge.net/

Delta Engine .NET 2D/3D

http://deltaengine.net/

Digital Rune 3D .NET Profi

http://www.digitalrune.com/

HAVOC Physics 3D Win32 Profi

http://www.havok.com/products/physics

Henge 3D XNA Physics .NET 

https://henge3d.codeplex.com/

Chipmunk 2D .NET Profi

https://chipmunk-physics.net/

Jitter Physics 2D /3D

http://jitter-physics.com/wordpress/

Matali 3D Physics .NET, Win32, Android

http://www.mataliphysics.com/

Ogre Physics 3D

http://www.ogre3d.org/

Ogre Bullet 3D .NET

http://www.ogre3d.org/tikiwiki/OgreBullet

Paradox 3D Engine

http://paradox3d.net/

Physics 2D .NET

https://code.google.com/p/physics2d/

Microsoft XNA 4.0

http://www.microsoft.com/en-us/download/details.aspx?id=23714

Bepu Physics

https://bepuphysics.codeplex.com/

Box2D XNA

http://box2dxna.codeplex.com/

SlimDX 2D/3D Graphics Engine .NET

http://slimdx.org/

SharpDX 2D/3D Graphics Engine .NET

http://sharpdx.org/

XNA 4.0 Refresh 2014

http://msxna.codeplex.com/releases

MS Managed DirectX

http://en.wikipedia.org/wiki/Managed_DirectX

OpenGL Graphics Library

http://www.opengl.org/

OpenTK 3D Graphics Library .NET

http://www.opentk.com/

Geometric Tools

www.geometrictools.com

Citrus Engine 2D/3D + Physics

http://citrusengine.com/

Haxe Physics 2D

http://old.haxe.org/com/libs/physaxe

Box2D WEB

https://code.google.com/p/box2dweb/

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:1c3e:8d9a:8876:483d...–
gna
~ Anonymní uživatel
1485 příspěvků
16. 9. 2021   #22
-
0
-

#21 JerryM
Ty a tvoje hormady odkazů. Nic z těch enginů nevyužije a o Vulkan nezavadí ani náhodou, ale to ty nemůžeš vědět, když nikdy ani netušíš o čem meleš.

Nahlásit jako SPAM
IP: 213.211.51.–
JerryM0
Super člen
16. 9. 2021   #23
-
0
-

melu pátý přes devátý .... takový jsem :) :) :) :)  už jsem se tak narodil ... nemužu za to :) :) :) :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:3836:b947:c11d:e03c...–
JerryM0
Super člen
16. 9. 2021   #24
-
0
-

#19 hlucheucho
ty už nechceš do C++ ? a proč ne ? je to přeci krásný programovací jazyk ne ? obzvláště ve verzi 21 :)

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:3836:b947:c11d:e03c...–
16. 9. 2021   #25
-
0
-

#24 JerryM
Verze 21? Vítězí moje lenost.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Super člen
16. 9. 2021   #26
-
0
-

verze 23 je už v přípravě :)

https://isocpp.org/std/the-standard

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:3836:b947:c11d:e03c...–
peter
~ Anonymní uživatel
3706 příspěvků
16. 9. 2021   #27
-
0
-

Vulkan je knihovna, programovaci jazyk, ktery resi spousteni programu na grafickych kartach a jejich cpu. Obdoba DirectX. Jako, muzes v tom delat okenkovou app. Ale jsou mnohem vhodnejsi knihovny, programy, engine pro app.
Jakoze, si na Vulkanu pripojich X procesoru grafickych karet a pak predas jedne funkci ukol a ta uz si to sama prerozdeli.
Jestli neco podobne potrebujes, tak by mozna bylo vyhodnejsi udelat app v normalnim programu a data posilat ne externi miniprogram, ktery resi jen ty vypocty. Mozna, jako mozna :) Mozna je lepsi to udelat rovnou v jednom.

Nahlásit jako SPAM
IP: 2001:718:2601:258:b168:bb69:b4b7:1a2e...–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 57 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý