Diskuze: Použítí vícekrát jednoho pictureboxu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 36 zpráv z 36.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
udělej si metodu createShot, která vytvoří picturebox, nastaví mu potřebné vlastnosti a přidá ho na formulář.
Ano děkuji a ještě trochu poradit s tou metodou prosím 
public void CreateShoot()
{
PictureBox pb = new PictureBox();
pb.BackgroundImage = "shot.png"; // Nefunguje, jak nastavím pozadí?
pb.BackColor = ....; // Jak na Trasparent?
}
Nefunguje, jak nastavím pozadí?
Image.FromFile("shot.png")
Jak na Trasparent?
// tuším, že
Color.Transparent
Tak nevím proč, ale prostě to nejde 
public void CreateShoot()
{
PictureBox pb = new PictureBox();
pb.Width = 5;
pb.Height = 10;
//pb.BackgroundImage = Image.FromFile("shot.png");
pb.BackColor = Color.Red;
pb.Left = pbShip.Left + (pbShip.Width / 2);
pb.Top = pbShip.Top++;
}
private void ShootTimer_Tick(object sender, EventArgs e)
{
CreateShoot();
}
Podle toho kódu by se to mělo každých 0,1s vygenerovat a letět nahoru.
Zkus ještě toto na to nastavení toho obrázku:
obrazek.Image = new Bitmap("obrazek.jpg");
Když sem to skusil tak se mi pokaždé sekl debuging nevim proč.
Já taky zrovna dělám s pictureboxem a taky jsem narazil na stejný problém. Šel jsem se tedy podívat do Form1.Designer.cs, kde jsou všechny kontrolky a úplně dole jsem narazil na:
//
//form1
//
...
this.Controls.Add(pictureBox1);
Jak vidíš, aby šel picturebox zobrazit nejdříve ho musíš přidat do form.
Dělám si hru jen tak pro radost. Jak hýbeš vesmírnou lodí a ze zhora
třeba něco padá a ty to sestřeluješ. Tak něco podobného
Ale nějak sem se zasekl u toho
střílení a u toho padání. :/
Zapomněl jsem, že:
this.Controls.Add(pictureBox1);
je u panelu. U pictureboxu ho musis dat do layoutu:
layout.Controls.Add(picturebox);
A kam to mám jako napsat?
do tý metody kde tvořím ten picturebox? Nebude jich pak přidaných
desítky?
Když změníš pozadí komponenty nebo obecně pracuješ s grafikou, tak bys měl volat metodu Refresh()
Tak už se v tom docela strácím 
Takže chceme toto že? 
public void CreateShoot()
{
PictureBox pb = new PictureBox();
layout.Controls.Add(pb);
pb.Width = 5;
pb.Height = 10;
//pb.BackgroundImage = Image.FromFile("shot.png");
pb.BackColor = Color.Red;
pb.Left = pbShip.Left + (pbShip.Width / 2);
pb.Top = pbShip.Top;
pb.Top += 2;
}
private void ShootTimer_Tick(object sender, EventArgs e)
{
CreateShoot();
panel.Refresh();
}
Stejně to nejde
CO je
špatně prosím opravte
¨Díky moc.
ono ti to asi funguje, ale jestli máš zakomentovaný ten řádek kde nastavuješ obrázek, tak tam máš jen průhledné pictureboxy.
Já tam ten obrázek vůbec nemám. Mám tam ale barvu pozadí to by mělo
vykreslit tedy červený obdelníček ne? to ale taky nevidím 
pb.BackColor = Color.Red;
Já to mám udělaný takhle: Když se zmáčkne mezerník tak se spustí timer a ten vytváří ty pictureboxy podle té metody a refreshuje panel.
a funguje to I tak? Si tam hoď breakpoint, jestli se to skutečně zavolá.
JJ, když do té metody CreateShot(); dám třeba něco jinýho. třeba aby s něco posunulo o x pixelů, posune se to takže ta metoda funguje.
layout.Controls.Add(pb);
posuň na konec metody (což by to sice nemělo způsobovat, ale chronologicky je to lepší) a zkus ji nahradit za
this.Controls.Add(pb);
jj, helejce asi jsme se posunuli trochu dál 
panel.Visible = false;
A najednou to tam bylo vidět
Ta střela tam byla, ale jenom jedna a nehýbala se což jsou další
problémy. Ale už víme že tam je schovaná pod tím panele. Jak s ní nahoru

musíš ji posunout do toho panelu
panel.Controls.Add(...)
jj super, už to mám.. A teď to nějak rozhýbat
bohužel k tomu nijak nemůžu
abych to rozhýbal v timeru protože to v tom timeru vůbec nevidím :/
to protože si to musíš uložit někam, tak abys to viděl.
vytvoříš proměnnou na formuláři a uložíš to do ni.
class Form {
PictureBox shoot; // v kódu s ní budeš pracovat jako this.shoot
}
Zobrazeno 36 zpráv z 36.