Avatar
roks
Člen
Avatar
roks:

Zdravím, mám statický List s názvom obrázky, je v ňom uložený názov obrázku, obrázok a priehľadná farba obrázku. Pri kliknutí na jeden button mám :

Bitmap bit;
                var obrazok = Program.Obrazky.SingleOrDefault(z => z.nazovObrazku == objekty.nazovObrazku);
                if (obrazok != null)
                {
                    bit = obrazok.obrazok;
                    bit.MakeTransparent(obrazok.farba);
                }

lenže toto spriehľadní aj originálny obrázok v liste, vedel by mi niekto poradiť, aby spriehľadnilo iba obrázok "bit" a nie aj obrázok z listu? :)

 
Odpovědět 10.12.2013 21:06
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Jaký je přesně důvod k statice ? A hlavně proč je ve třídě Program ?
Jinak tě odkážu sem http://www.itnetwork.cz/…ge-collector

Nahoru Odpovědět 10.12.2013 21:08
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
Odpovídá na Petr Nymsa
roks:

V programe je preto, lebo obrázky používam vo viacerých oknách... Static preto, lebo bez neho mi to nechce ísť ...
V programe mám zapísané :

private static List<Obrazok> obrazky = new List<Obrazok>();
internal static List<Obrazok> Obrazky
{
    get { return Program.obrazky; }
    set { Program.obrazky = value; }
}
 
Nahoru Odpovědět 10.12.2013 21:15
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Tohle smaž ! "Static preto, lebo bez neho mi to nechce ísť " tak jasně když je celá třída Program.cs statická.

Udělej si nějaký správce, který si bude předávat přes konstruktoru. ZDE se vůbec statika nehodí a nepoužije ! Jen tak mimochodem, víš co znamená internal ?

Nahoru Odpovědět 10.12.2013 21:18
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:

To občas generuje IDE přes zkratku na vygenerování property :)

 
Nahoru Odpovědět 10.12.2013 21:25
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Jan Vargovský
Petr Nymsa:

Jo to je pravda a trochu nevidím důvod

Nahoru Odpovědět 10.12.2013 21:28
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:

Resp. generuje to u statiky hlavně a to celkem dává smysl :)

 
Nahoru Odpovědět 10.12.2013 21:30
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Jan Vargovský
Petr Nymsa:

No tak to už zřejmě jo :) ale to co zde má uživatel roks, je hloupý nesmysl a zcela špatnej návrh

Nahoru Odpovědět 10.12.2013 21:31
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:

Je to začátečník, ani nezná konvence, ani neumí pořádně pojmenovat instance ... :)

 
Nahoru Odpovědět 10.12.2013 21:34
Avatar
roks
Člen
Avatar
Odpovídá na Petr Nymsa
roks:

Nie neviem čo znamená international, mne to dávnejšie poradil jeden programátor tu na fóre, a odvtedy mi to išlo, tak som sa tým ďalej nezaoberal... Nechápem ako to myslíš, navrhnúť si správcu :/

 
Nahoru Odpovědět 10.12.2013 21:34
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na roks
Jan Vargovský:

Udělat si třídu Spravce a v ní mít normalně public List<T> Obrazky {get;set;} a pracovat s jednou instancí v aplikaci. A né to řešit statikou. Pokud nepracuješ s více projekty, tak je internal i public stejné, když pak budeš dělat s více projekty najednou, tak internal je viditelné jen v projektu (assembly) zatím co public všude.

 
Nahoru Odpovědět 10.12.2013 21:37
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Když se podíváš na zdejší tutoriály o OOP něco podobného se tam řeší :). Udělej si nějakou třídu, například SpravceObrazku, pro mě lepším názvem ImageManager a v něm budeš mít List<Obrazek>, následně si tuto instanci správce budeš posílat skrze konstruktory daných formulářů. Navíc díky tomuto návrhu můžeš Správci dát metody jako PřidatObrázek, SmazatObrázek, UložitObrázky, NačístObrázky,...
Každopádně doporučil bych ti se vrátit k seriálu a trošku si ujasnit co je co :)

  1. O co se snažíš ? jakou vytváříš aplikaci ?
  2. Pošli sem kod třídy Obrazek
Nahoru Odpovědět 10.12.2013 21:38
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Správce? To je nějaký antipattern?

Nahoru Odpovědět 10.12.2013 21:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Na rýpání nemám náladu, běž flámovat někde jinde. Díky.

 
Nahoru Odpovědět  +1 10.12.2013 21:43
Avatar
roks
Člen
Avatar
Odpovídá na Petr Nymsa
roks:

ďakujem pekne :)
za 1. robím rozhranie pre uľahčenie tvorby hier, taký primitívny Game Maker :)
za 2.

public string meno { get; set; }
        public Bitmap obrazok { get; set; }
        public Color farba { get; set; }
        public int id { get; set; }
        public Obrazok(string Meno, Bitmap Obrazok, Color Farba, int ID)
        {
            meno = Meno;
            obrazok = Obrazok;
            farba = Farba;
            id = ID;
        }
 
Nahoru Odpovědět 10.12.2013 21:43
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

To vypadá v pořádku, jenom v C# se dodržuje konvence že každá vlastnost začíná velkým písmenem ;) Mrkni se schválně třeba na vlastnosti formuláře, Console, čehokoliv a uvidíš že veškeré vlastnosti jsou velkým, je to zvyk který je dobrý dodržovat :)

IMHO dělat nějaký správce na tvorbu her bez základních znalostí a zkušeností je dle mého názoru trošku špatný. Nechci ti brát nadšení ale asi z toho nevznikne nic moc extra, každopádně naučit se na tom dá pěkně :)

Nahoru Odpovědět 10.12.2013 21:45
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
Odpovídá na Petr Nymsa
roks:

Veď ide mi o to, aby som sa naučil :) a veľké písmená? tak to je len silou zvyku ;)

 
Nahoru Odpovědět 10.12.2013 21:47
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na roks
Petr Nymsa:

Spíše se obávám že se na tom mnoho nenaučíš, zkus si zdejší cvičení u OOP a když je zvládneš na výbornou zkus si třeba udělat v OOP klasického robota Karla, na pár příkazů ti bude různě chodit a pokládat bloky ;) Nevím co vše už jsi zvládl či ne :)

K těm počátečním velkým písmenům. Není to je o síle zvyku je to světová konvence která by se měla dodržovat. Tak jako následující

Třídy - první písmeno velké
Metody - to samé
Vlastnosti - to samé
proměnné - malé písmeno
Využívá se spíše CamelCase - tj NejakaMetoda, DruhaNejakaMetoda

Nahoru Odpovědět 10.12.2013 21:51
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
roks
Člen
Avatar
Odpovídá na Petr Nymsa
roks:

Tak vďaka za užitočné rady! :)

 
Nahoru Odpovědět 10.12.2013 22:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.