játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] > 40 < [45] [46]
Ati500 - Tag | 119 hsz       Online status #48337   2007.03.01 08:04 GMT+1 óra  
Az amúgy nem feltétlen baj, ha sok benne a ciklus, nekem oldott már meg a c# olyan meredek dolgokat is 1 mp alatt, hogy hajaj... Pedig nincs túl erős gépem.
Szóval ha vmihez sok ciklus kellene és máshogy nem lehet, nyugodtan használd, mások is használják, mégsem lassul a progi...

   
Asylum - Törzstag | 5440 hsz       Online status #48324   2007.03.01 06:54 GMT+1 óra  
Röhögni fogtok
Nem tudom kinyirni Csak dönteltelnre tudom kiügyeskedni de elverni nem
Nemtom mi az algo neve de hatásos...csak sok benne a ciklus

http://www.prog.hu/cikkek/?aid=415
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
~Cre@tine~> - Tag | 702 hsz       Online status #48318   2007.03.01 04:42 GMT+1 óra  
Idézet
Asylum :
Találtam egy érdekes algoritmust: nem keresőfát használ mégis jónak tűnik. Egy baja van: sok ciklus van benne (mégis pillanatok alatt lefut...tud vmit eza C# ) már csak jól meg kell írni és irigykedhetnek a kollégák a suliban


Amőbára a minmax algoritmus pont jó. Próbálgatja a gép a lerakott elemek körüli mezőket és az adott állást leosztályozza, aztán kiválasztja a legjobb pontot és kész. Bár ilyen 7*7-es táblához olyan nagy algoritmus nem kell szerintem.

   
Asylum - Törzstag | 5440 hsz       Online status #48298   2007.03.01 00:44 GMT+1 óra  


Naja csak előfordulhat hogy zh n linux alatt kell megirnom a progit szal aztis gyakorolni kéne Nekem csak az a bajom h ugyanazt kell megirnom...irtam a gyakveznek is de aszondta h jobb ha megszokom LOL
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
kicsy - Szerkesztő | 4304 hsz       Online status #48292   2007.02.28 15:24 GMT+1 óra  
Idézet
Asylum :
Amugy szerintetek is baromság h UGYANEZT linux alá is meg kell irnom? ugyanugy dosival meg mindennel...300 feladatbol nem képesek egy másikat adni...megáll az ace



Mono
kicsy ● SilentVertigo Team - project Solarah
http://blog.yscik.com
   
Asylum - Törzstag | 5440 hsz       Online status #48288   2007.02.28 14:28 GMT+1 óra  
Találtam egy érdekes algoritmust: nem keresőfát használ mégis jónak tűnik. Egy baja van: sok ciklus van benne (mégis pillanatok alatt lefut...tud vmit eza C# ) már csak jól meg kell írni és irigykedhetnek a kollégák a suliban

Amugy szerintetek is baromság h UGYANEZT linux alá is meg kell irnom? ugyanugy dosival meg mindennel...300 feladatbol nem képesek egy másikat adni...megáll az ace
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
~Cre@tine~> - Tag | 702 hsz       Online status #48279   2007.02.28 13:47 GMT+1 óra  
Ilyen kis táblánál túl nagy AI nem kell. Egyszerűen végigzongorázod a lehetőségeket és kész. A CPU terhelést nem is néztem. Nálam a tili-toli alig eszik 2-3% ot. Szerintem ilyen kis táblás játékhoz elég lett volna egy sima gomb vagy pictureBox mátrix és kész.

   
Asylum - Törzstag | 5440 hsz       Online status #48238   2007.02.28 07:45 GMT+1 óra  
Énis tudom h hiányzik és akartam is irni de...ez eaf beadando
Amugy meg sajni még nem tanultam mesterséges intelligenciát De azért körülnézek
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Orphy - Törzstag | 1893 hsz       Online status #48220   2007.02.28 04:11 GMT+1 óra  
Így pofára nem rossz, tetszenek a köreid, és az x-eid.

Amit Cre@tin is mondott, az AI hiányzik.
Én ehhez még annyit tennék hozzá, hogy egy ilyen kis egyszerű játéknál nem tartom indokoltnak, hogy megegye a procit 100%-ra. A game loop helyett próbálj meg valami eseményvezérelt működést megvalósítani, nem kell folyamatosan renderelni, csak ha valami változik.
A dokumentáció nálam 404-es hibát dobott, és sokáig volt "fehérember várni homokóra" effektus, amire megjelent az Explorer ablaka.
   
~Cre@tine~> - Tag | 702 hsz       Online status #48219   2007.02.28 03:46 GMT+1 óra  
Ez jó de az AI az hol van? Így a játék teljesen olyan, mitha sima gombok lennének feltéve és a background kép meg változik ha rákattintok.

   
Asylum - Törzstag | 5440 hsz       Online status #48182   2007.02.27 11:44 GMT+1 óra  
Lehet tesztelni: http://people.inf.elte.hu/asylum/programs/Cross5.zip
Tuti vannak benne még bugok de nincs erőm az összes lehetöséget végigprobálni
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5440 hsz       Online status #48171   2007.02.27 10:53 GMT+1 óra  
Mármajdnemkész

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Orphy - Törzstag | 1893 hsz       Online status #48114   2007.02.27 00:20 GMT+1 óra  
Úgy, hogy az új ablakot nem .Show()-al, hanem .ShowDialog()-gal nyitod meg.
   
Asylum - Törzstag | 5440 hsz       Online status #48106   2007.02.26 14:49 GMT+1 óra  
Áááh téleg már irtad bocs, kösz, müxik

A fókuszos ez volt: Ha az alkalmazásban felugrik egy ablak, hogy tudok neki kizárólagos fókuszt adni
Tehát addig ne kattinthasson a user vissza a gamebe amig be nem zárta.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Orphy - Törzstag | 1893 hsz       Online status #48097   2007.02.26 12:00 GMT+1 óra  
Átadás referenciaként:

Kód:
private void fuggveny( ref referenciakent_atadott_valtozo)
{}


Alapból nem mindent ref-ként ad át, úgy tudom, csak a nagyobb, illetve user által kreált osztályokat adja át alapból ref-ként. Az egyszerű típusok (int, string), és a struct-ok default-ban érték szerint mennek át.

Öööö, nekem az a fókuszos kérdés kimaradt...
   
Asylum - Törzstag | 5440 hsz       Online status #48095   2007.02.26 11:40 GMT+1 óra  
Noh most jött el aza pillanat hogy marha jólenne referenciát meg pointert használni... ugyanis nem akarok 30 ezermillio window formot belepakolni az amugyis 475 soros + 4 osztályos programba..
szal valami trükk nincs hogy a fő osztály egy elemét valahogy referenciaként átadjam egy másik osztálynak ami megváltoztasson benne valamit? Konkrétan a játékosok nevét kéne átírnia.
Aszittem alapbol ref szerint történik az átadás de nem adja át

Ja és a fókuszos kérdésre is tud vki választ? (= köszi
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Orphy - Törzstag | 1893 hsz       Online status #48034   2007.02.26 00:36 GMT+1 óra  
Ha tudod az elérési útját, akkor csak simán elindítasz egy process-t. Ilyenkor elvileg a file-hoz rendelt program fog elindulni.

http://blogs.msdn.com/csharpfaq/archive/2004/06/01/146375.aspx
   
Asylum - Törzstag | 5440 hsz       Online status #48027   2007.02.25 14:41 GMT+1 óra  
Ja igen hogy hogyan lehet azt megcsinálni hogy rákattint egy gombra és azmeg megnyitja a doksit adobe readerrel vagy ie vel (pdf lesz az tuti).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5440 hsz       Online status #48026   2007.02.25 14:38 GMT+1 óra  
Tök jól haladok az amőbával nemis nehéz ez (kövezzetek meg de megint ugyérzem magam mint a darkbasices időkben )

Két kédésem lenne:

1) Ha az alkalmazásban felugrik egy ablak, hogy tudok neki kizárólagos fókuszt adni (hűdejol megfogalmaztam ), szóval hogy ne tudjon a user visszakattintani a game re hanem elöbb zárja be vagy csináljon vele valamit.

2) Elfelejtettem pill.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
~Cre@tine~> - Tag | 702 hsz       Online status #48005   2007.02.25 11:10 GMT+1 óra  
Egyszerű szinezést simán meg lehet vele oldani csak át kell nézni a color mátrixot picit jobban. A .NET rengeteg dolgot tartalmaz, úgyhogy várható volt, hogy ilyennek is kell lenni benne. A paint.NET is biztos így csinálja a szinezést.

   
Ati500 - Tag | 119 hsz       Online status #48004   2007.02.25 11:07 GMT+1 óra  
Hát ez érdekes, majd belenézek...
Amúgy alap képeffektekhez kéne (solarize, black & white, brown & white stb.), nem akarok semmit a progival, csak olvastam egy cikket a képpontonkénti manipulációkról és gondoltam megírom c# alatt... Ekkor jöttek a gondok a sebességgel, de lefordított exet futtatva nem volt különösebb probléma.
Csak gondoltam, akármikor hasznos lehet, ha tisztában vagyok a c# és a gui használatával ilyen téren is...

   
~Cre@tine~> - Tag | 702 hsz       Online status #48000   2007.02.25 10:51 GMT+1 óra  
Itt vannak komolyabb effektek, nagyon én se másztam bele. Nézd át jobban itt
A color matrix-os sebességről: "I tried this on my antique Windows 98se© machine running a Pentium II© processor and got HighSpeed at 220 ms and HighQuality at 270ms, but this wasn’t consistent and likely as not they both ran at 220ms."

   
~Cre@tine~> - Tag | 702 hsz       Online status #47999   2007.02.25 10:48 GMT+1 óra  
Attól is függ milyen effekthez kell. Szinezésre jó, de mondjuk motion blur-hoz már ez kevés lesz.

   
Ati500 - Tag | 119 hsz       Online status #47998   2007.02.25 10:45 GMT+1 óra  
Őőő, és el tudnád magyarázni, hogy a Matrix elemei mit csinálnak, meg hogy működik ez az egész?
Mert ez így működik frankón, de egyéb effekthez...

   
~Cre@tine~> - Tag | 702 hsz       Online status #47997   2007.02.25 10:45 GMT+1 óra  
A 2. megoldásnál már nagyságrendekkel gyorsabb lett.
A parse dolgot meg kikeresem. Az is lehet, hogy a Parse nem működött a convert to meg igen, de már arra se emlékszek pontosan.

   
balogh9 - Törzstag | 801 hsz       Online status #47996   2007.02.25 10:38 GMT+1 óra  
Idézet
Ati500 :
Köszi, mindjárt ki is próbálom!
Amúgy egy kis egyszerű képszerkesztő progit szerkesztgetek és próbáltam nem a szerkesztőböl futtatni, hanem a lefordított exe-t indítottam el és így sokkal gyorsabb volt... Szerkesztőböl egy 200*100-as kép is volt jó pár mp, a lefordított exe-vel meg 1024*768-as háttérképet solarize-oltam úgy 4-5 mp alatt... Szóval végülis megoldódott, de ha ez a módszer, amit te írsz, még a szerkesztőben is gyorsan működik, akkor lefordítva még gyorsabb lesz - ami jó.
C# nem gagyi, ezt tudtuk eddig is.


______

én is kipróbáltam, az exevel egész yo a sebesség
_____________________
C++ && OGL
   
Ati500 - Tag | 119 hsz       Online status #47987   2007.02.25 09:22 GMT+1 óra  
Köszi, mindjárt ki is próbálom!
Amúgy egy kis egyszerű képszerkesztő progit szerkesztgetek és próbáltam nem a szerkesztőböl futtatni, hanem a lefordított exe-t indítottam el és így sokkal gyorsabb volt... Szerkesztőböl egy 200*100-as kép is volt jó pár mp, a lefordított exe-vel meg 1024*768-as háttérképet solarize-oltam úgy 4-5 mp alatt... Szóval végülis megoldódott, de ha ez a módszer, amit te írsz, még a szerkesztőben is gyorsan működik, akkor lefordítva még gyorsabb lesz - ami jó.
C# nem gagyi, ezt tudtuk eddig is.

   
~Cre@tine~> - Tag | 702 hsz       Online status #47967   2007.02.25 05:17 GMT+1 óra  
Idézet
Ati500 :
Hát megpróbáltam, valamivel gyorsabb lett, ez tény, de azért érdekes, hogy ha más képszerkesztő progiban próbálom, akkor sokkal gyorsabban megvan...
Régebben esett sok szó arról, hogy a .NET-es programok jóval lassabbak lesznek, mint pl. egy sima c++os, ezek szerint ez a GUI-ra is vonatkozik? Végülis egyéb téren soha nem volt semmi bajom a c# gyorsaságával, pedig néha dolgoztattam elég nagy tömbökkel is, pl.
Gondoltam arra is, hogy meg lehetne oldani DirectX segítségével, de tudtommal nincsen benne ilyen pixelenkénti képmanipuláció (meg az már egy másik topic tárgya lenne...)


Végül is találtam megodást ha még aktuális:
Kód:
using System.Drawing.Imaging;

Bitmap myBitmap = (Bitmap)picBox.Image;
ColorMatrix cMatrix = new ColorMatrix
(new float[][]
    {
        new float[]{0.5f,0.5f,0.5f,0,0},
        new float[]{0.5f,0.5f,0.5f,0,0},
        new float[]{0.5f,0.5f,0.5f,0,0},
        new float[]{0,0,0,1,0,0},
        new float[]{0,0,0,0,1,0},
        new float[]{0,0,0,0,0,1}
    }
);

    ImageAttributes ImageAttr = new ImageAttributes();
    ImageAttr.SetColorMatrix(cMatrix);

    Graphics g = Graphics.FromImage(myBitmap);
    g.DrawImage(picBox.Image, new Rectangle(0, 0, picBox.Image.Width, picBox.Image.Height), 0, 0, picBox.Image.Width, picBox.Image.Height, GraphicsUnit.Pixel, ImageAttr);
    picBox.Image = myBitmap;

Timer-al nem mértem, de a click esemény után debug módban is azonnal átszinezte ugyanazt a képet, amit a ciklussal 1 mp alatt. Csak nem olyan gagyi ez a c#.

   
~Cre@tine~> - Tag | 702 hsz       Online status #47966   2007.02.25 05:14 GMT+1 óra  
Idézet
balogh9 :
Idézet
~Cre@tine~> :
Idézet
balogh9 :
milyen kivételes esetre gondolsz pl?


Már nem tudom, de volt rá példa konzolos programnál. Ha ilyen előfordul, akkor használd a Parse-t.



thx


Majd kikeresem a 40-50 gyakorlat közül...

   
balogh9 - Törzstag | 801 hsz       Online status #47964   2007.02.25 04:32 GMT+1 óra  
Idézet
~Cre@tine~> :
Idézet
balogh9 :
milyen kivételes esetre gondolsz pl?


Már nem tudom, de volt rá példa konzolos programnál. Ha ilyen előfordul, akkor használd a Parse-t.



thx
_____________________
C++ && OGL
   
~Cre@tine~> - Tag | 702 hsz       Online status #47963   2007.02.25 04:20 GMT+1 óra  
Idézet
balogh9 :
milyen kivételes esetre gondolsz pl?


Már nem tudom, de volt rá példa konzolos programnál. Ha ilyen előfordul, akkor használd a Parse-t.

   
balogh9 - Törzstag | 801 hsz       Online status #47960   2007.02.25 03:40 GMT+1 óra  
pl?
_____________________
C++ && OGL
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #47958   2007.02.25 03:12 GMT+1 óra  
Igen, én is így oldottam meg, de ennél több nekem sem jutott eszembe. Peidg ennek vannak hátrányai...
   
balogh9 - Törzstag | 801 hsz       Online status #47957   2007.02.25 02:52 GMT+1 óra  
üdv shade

mivel ugysem árt gyakorolnom a c#-ot nekiálltam kódolni vmi olyasmit amit te kérsz
nem lett teljesen olyan...

de elvileg működik a dolog helyesen

van sokkal jobb kód erre mint amit én írtam most kb ~30 perc alatt, szal még lehet hibás is, de ahogy én teszteltem így gyorsan, elvileg yol működik

nem a legpofásabb kód, de még c#-ban nem vagyok annyira pro sajna

nah írom a kódot, hátha segít vmit

Kód:
public partial class Form1 : Form
    {
        private string drag_elem_nev  = "";
        private int drag_elem_index   = 0;
            // drag elem adatai (mouse down eseménynél kapnak értéket)

        private string drop_elem_nev  = "";
        private int drop_elem_index   = 0;
            // drop elem adatai (mouse up eseménynél kapnak értéket)

        private bool down = true;
            // egyszer engedélyezzük a mouse down eseménynél az értékadást

        public Form1()
        {
            InitializeComponent();
        }

        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (down)
            {
            drag_elem_nev = listBox1.GetItemText(listBox1.Text);
                // a kiválasztott elem neve

            drag_elem_index = listBox1.IndexFromPoint(e.X, e.Y);
                // a kiválasztott elem indexe

            down = false;
                // elsőre adunk csak értéket
            }
        }

        private void listBox1_MouseUp(object sender, MouseEventArgs e)
        {
            drop_elem_nev = listBox1.GetItemText(listBox1.Text);
                // az aktuális elem neve

            drop_elem_index = listBox1.IndexFromPoint(e.X, e.Y);
                // ahova a kiválasztott elemet "dobjuk"

            if (drag_elem_index < drop_elem_index)
                    // ha a drag elem feljebb van mint a drop
            {
                if ((drag_elem_index >= 0) && (drop_elem_index != drag_elem_index) && (drag_elem_index >= 0))
                       // szükséges feltételek, ha ugyanazon az elemen maradtunk + listában vagyunk
                {
                    listBox1.Items.Remove(drag_elem_nev);
                        // töröljük a drag nevű elemet

                    listBox1.Items.Insert(drop_elem_index, drag_elem_nev);
                        // beillesztjük a drop index helyére a drag nevű elemet
                       
                    listBox1.Items.Insert(drag_elem_index, drop_elem_nev);
                        // beillesztjük a drag index helyére a drop nevű elemet
                   
                    listBox1.Items.RemoveAt(drop_elem_index);
                        // töröljük a drop indexű elemet
                }
            }
            else
                    // ha a drop elem feljebb van mint a drag
            {
                if ((drag_elem_index >= 0) && (drop_elem_index != drag_elem_index) && (drop_elem_index >= 0))
                    // szükséges feltételek, ha ugyanazon az elemen maradtunk + listában vagyunk
                {
                    listBox1.Items.RemoveAt(drop_elem_index);
                        // töröljók a drop indexű elemet

                    listBox1.Items.Remove(drag_elem_nev);
                        // törörljük a drag nevű elemet

                    listBox1.Items.Insert(drop_elem_index, drag_elem_nev);
                        // beillesztjük a drop index helyére a drag nevű elemet

                    listBox1.Items.Insert(drag_elem_index, drop_elem_nev);
                    // beillesztjük a drag index helyére a drop nevű elemet
                }
            }

            down = true;
                // következhet az újabb d&d
        }

    }
_____________________
C++ && OGL
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #47953   2007.02.24 23:23 GMT+1 óra  
Olyat nem tud véletlenül valaki, hogy egy Drag List Box-ot hogy lehet összehozni C# alatt? Arra gondolok, amikor ha megragadjuk az elemet, akkor a listában tudjuk le-fel húzogatni, megváltoztatni a lista sorrendjét, valamint mindíg jelzi egy vonal is, hogy hova fog bekerülni a kívánt elem.
   
balogh9 - Törzstag | 801 hsz       Online status #47922   2007.02.24 09:32 GMT+1 óra  
milyen kivételes esetre gondolsz pl?
_____________________
C++ && OGL
   
~Cre@tine~> - Tag | 702 hsz       Online status #47908   2007.02.24 07:19 GMT+1 óra  
A két módszer ugyanazt az eredményt adja, de kivételes esetben csak a Parse akar működni. Mielőtt a winforms-hoz egyátalán nekifogtam konzolos progikban gyakoroltam.

   
balogh9 - Törzstag | 801 hsz       Online status #47905   2007.02.24 06:58 GMT+1 óra  
ezt én még nem ismertem...
bár nekem a konvert jobban teccik
ahhoz is ugyanúgy nem árt ha számot ír be
de azt meg egyszerűen tudja ellenőrizni szal noproblem
_____________________
C++ && OGL
   
~Cre@tine~> - Tag | 702 hsz       Online status #47903   2007.02.24 06:42 GMT+1 óra  
Vagypedig:
Kód:
int number = int.Parse(textBox1.Text);


De ehhez akkor tényleg integer-nek kell lenni a textBox-ban.

   
balogh9 - Törzstag | 801 hsz       Online status #47901   2007.02.24 06:30 GMT+1 óra  
private int a;
private double b;
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToDouble(textBox1.Text); // , kell a textboxba az egész rész után
_____________________
C++ && OGL
   
BerbeckU - Tag | 506 hsz       Online status #47900   2007.02.24 06:24 GMT+1 óra  
Nah, haladgatok, annak elenére, hogy nem nagyon jött válasz
Arra rájöttem, hogy egy panelre kell pakolni a radio gombokat, és akkor csoportosítva lesznek.
Az újsor hozzáadós megoldásról lemondtam, szóval inkább más megközelítéssel próbálkozom.

A problémám az lenne, hogy hogyan lehet int vagy akár float típusú adatokat bekérni textbox segítségével.

Tehát ha bekérem egy adatot, akkor a valami_nev.Text stringként tárolja a textboxban lévő adathalmazt, így nyilván nem tudok velük számításokat végezni.

Ötletek?

___________
A lelkesedés az, ami a tudásnak ízt ad...


   
~Cre@tine~> - Tag | 702 hsz       Online status #47897   2007.02.24 06:17 GMT+1 óra  
Itt szerintem nem a .NET-es progi a lassabb, hanem ez a módszer nem teljesen jó. A paint.NET se lassú egyátalán sőt! Egy motion blur effekt tényleg egy pillanat vele ugyanezzel a képpel nem pedig 1 mp. Később ha lesz időm, majd gógyizok a megoldáson.
DirectX-ben pixel shaderezés van, de az már az XNA téma.

Ezt a hozzászólást ~Cre@tine~> módosította (2007.02.24 06:24 GMT+1 óra, ---)

   
Ati500 - Tag | 119 hsz       Online status #47872   2007.02.24 03:14 GMT+1 óra  
Hát megpróbáltam, valamivel gyorsabb lett, ez tény, de azért érdekes, hogy ha más képszerkesztő progiban próbálom, akkor sokkal gyorsabban megvan...
Régebben esett sok szó arról, hogy a .NET-es programok jóval lassabbak lesznek, mint pl. egy sima c++os, ezek szerint ez a GUI-ra is vonatkozik? Végülis egyéb téren soha nem volt semmi bajom a c# gyorsaságával, pedig néha dolgoztattam elég nagy tömbökkel is, pl.
Gondoltam arra is, hogy meg lehetne oldani DirectX segítségével, de tudtommal nincsen benne ilyen pixelenkénti képmanipuláció (meg az már egy másik topic tárgya lenne...)

   
~Cre@tine~> - Tag | 702 hsz       Online status #47858   2007.02.23 15:25 GMT+1 óra  
Idézet
Ati500 :
Nekem is lenne egy kérdésem, ráadásul témába is vág, hiszen PictureBoxokról volt szó...
Tehát vannak ezek a képeffektek, amiket úgy lehet megcsinálni, hogy végignézed a kép összes pixeljét és az rgb értékeit módosítod valahogy. Gondolok pl. a negatívra, ahol minden színösszetevőt ki kell vonni 255-ből. Na most ez működik is szépen egy PictureBoxba tetszőlegesen betöltött képnél, viszont hihetetlenül lassú. Tehát míg egy képszerkesztő progi egy egész nagy képre is pillanatok alatt elvégzi, addig nekem egy pl. 200*100-as képre is több másodpercig tartott (Athlon64 3200+ 1 GB RAM-mal...)
Gondolom a módszerem a rossz, tudnátok valami alternatívát a jánlani? Most úgy csinálom, hogy két egymásba ágyazott for ciklussal végigmegyek az összes pixelen és a Bitmap.SetPixel(x, y, color) metódussal változtatgatom a színeket, majd visszadom a PictureBoxra a Bitmapet. Milyen más lehetőségek vannak, vagy milyen módon lehetne egy kis teljesítménynövekedést elérni (solarize effektnél annyit bénázott a progi, hogy a Windows kiírta, hogy nem válaszol és beakarta zárni, de aztán nagy nehezen visszatért)?


Hát ha a fejlesztői környezettel futtatom debug módban akkor elbíbelődik vele percekig, de amúgy ha a relase exét futtatom külön, akkor kb 1 mp celeron 1 ghz-en egy 500*500 kép átszinezése, második futtatásra méggyorsabb.
Kód:
private void btnStart_Click(object sender, EventArgs e)
{
    Bitmap myBitmap = (Bitmap)picBox.Image;
    Color col;

    for (int X = 0; X < myBitmap.Size.Width; ++X)
        for (int Y = 0; Y < myBitmap.Size.Height; ++Y)
        {
            col = myBitmap.GetPixel(X, Y);
            myBitmap.SetPixel(X, Y, Color.FromArgb((col.R + col.G + col.B) / 3, 
            (col.R + col.G + col.B) / 3,  (col.R + col.G + col.B) / 3));
        }
        picBox.Image = myBitmap;
}

   
Ati500 - Tag | 119 hsz       Online status #47836   2007.02.23 11:29 GMT+1 óra  
Nekem is lenne egy kérdésem, ráadásul témába is vág, hiszen PictureBoxokról volt szó...
Tehát vannak ezek a képeffektek, amiket úgy lehet megcsinálni, hogy végignézed a kép összes pixeljét és az rgb értékeit módosítod valahogy. Gondolok pl. a negatívra, ahol minden színösszetevőt ki kell vonni 255-ből. Na most ez működik is szépen egy PictureBoxba tetszőlegesen betöltött képnél, viszont hihetetlenül lassú. Tehát míg egy képszerkesztő progi egy egész nagy képre is pillanatok alatt elvégzi, addig nekem egy pl. 200*100-as képre is több másodpercig tartott (Athlon64 3200+ 1 GB RAM-mal...)
Gondolom a módszerem a rossz, tudnátok valami alternatívát a jánlani? Most úgy csinálom, hogy két egymásba ágyazott for ciklussal végigmegyek az összes pixelen és a Bitmap.SetPixel(x, y, color) metódussal változtatgatom a színeket, majd visszadom a PictureBoxra a Bitmapet. Milyen más lehetőségek vannak, vagy milyen módon lehetne egy kis teljesítménynövekedést elérni (solarize effektnél annyit bénázott a progi, hogy a Windows kiírta, hogy nem válaszol és beakarta zárni, de aztán nagy nehezen visszatért)?

   
~Cre@tine~> - Tag | 702 hsz       Online status #47818   2007.02.23 05:17 GMT+1 óra  
A PictureBox azért jó, mert tudsz rá képet rakni, váltogatni, lehet mozgatni és kattintási eseményt is tud fogadni. A kép alapján ez látszott nekem kézenfekvőnek. A rajzolás akkor jó amikor mondjuk egy 100*100-as táblát kell megjeleníteni. Ott már neccesebb lenne futási idejű komponensekkel operálni. Amúgy néztem pac-man játékot, de ott sincs canvas osztály. Ha nem muszály akkor nem kell ezt bonyolítani.
eater game1
eater maze

   
Asylum - Törzstag | 5440 hsz       Online status #47809   2007.02.23 00:59 GMT+1 óra  
Nemtom nekem a rajzolós jobban bejön meg nem ismerem még annyira a GDI t ugyh igy egyszerübb volt.

Amugy ez background kép csak nem elipszist rajzoltam hanem az X meg a O is egy külön image, a tábla pedig egy sprite okbol (csináltam ) álló mátrix. Az ua. mint a picturebox? Mert akkor "határeset"...

Csini a csajszi a képen
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
~Cre@tine~> - Tag | 702 hsz       Online status #47799   2007.02.22 13:48 GMT+1 óra  
Idézet
Asylum :
Az első screenshot




Ezt simán meg lehet oldani egy PictureBox mátrix-al is, amit futási időben egy ciklussal állítasz elő. Ha nagyon rajzolni akarsz akkor meg beraksz egy background képet a form-ra aztán simán DrawEllipse és kész! Rajznál érdemes használni a SmoothingMode.AntiAlias-t és a LinearGradientBrush-t.
Nekem ilyen lett a tili-toli játék PictureBox mátrix-al:
kép1
kép2

Ezt a hozzászólást ~Cre@tine~> módosította (2007.02.22 13:57 GMT+1 óra, ---)

   
BerbeckU - Tag | 506 hsz       Online status #47796   2007.02.22 13:34 GMT+1 óra  
Elkezdtem a C#-al foglalkozni, és a WinForms-ot gyűröm. Két kérdésem lenne.

Adott egy űrlap. Az űrlap egy sornyi bevitelre el van készítve (szövegek, rádió gombok, és lenyíló listák). Azt szeretném, hogy, a sor végére beszúrt + gomb segítségével egy ugyanilyen sort dobjon elő csak pl ha elneveztem egy mezőt text_darabszam1-nek akkor nyilván a következő sorban a megfelelő mező már a text_darabszam2 nevet kapja majd.
Gondolom a kattitnásra kell mégegyszer meghívni az inicializáló részt, csak más adatokkal, de ez túl hosszú, és amúgy is dinamikusnak kellene lennie a neveknek... Tehát ilyesmit hogyan lehet?

A másik gondom, hogy hogyan lehet a rádió gobokat csoportosítani. Tehát a fenti esetél is ugye a simán létrehozott gombok mind egy csoportba tartoznak majd és nem soronként hanem az egészben egyszerre egy lehet kijelölve.

A válaszokat előre is köszönöm!

___________
A lelkesedés az, ami a tudásnak ízt ad...


   
Asylum - Törzstag | 5440 hsz       Online status #47785   2007.02.22 10:14 GMT+1 óra  
Az első screenshot

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] > 40 < [45] [46]