Kezdőoldal » Számítástechnika » Programozás » Hogy kéne megoldani az alábbi...

Hogy kéne megoldani az alábbi problémát?

Figyelt kérdés

Delphiben probálkozok egy olyasmi dolgot kivitelezni, h egy kép komponensre random pontokat generálok. Azt szeretném elérni, h mikor a kép valamelyik szélére esik egy pont, akkor növeljevelje a kép méretét(x,y koordinátát) egy megadott értékkel pl 50-el. Ez egy ciklusba menne egy bizonyos méretig. Mondjuk max 500x500-ig.

Addig megvan, h kigenerálok pontokat. Azt is megtudtam oldani, h növekedjen a kép, de a megnövelt részbe már nem akar generálni pontokat, valamint a kettőt nem tudom összerakni, mivel nem tudom a széleket meghatározni.

Segítene esetleg valaki elkésziteni ezt a programot?


2015. dec. 27. 16:45
 1/8 anonim ***** válasza:
Mi lenne ha eleve 500x500-as képpel kezdenél és nyilvántartanád azt a méretet, ami "használható" ?
2015. dec. 27. 16:52
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Tulajdonképpen nem a méret növelés a lényeg, hanem a véletlenszerű szines pixelek által kirajzolt minta.
2015. dec. 27. 18:32
 3/8 SimkoL ***** válasza:
Az egész pár sor volt 'folyamatjelzővel' és másokkal :) A Repaint és az Application.ProcessMessages néha csodákra képes. [link]
2015. dec. 28. 08:24
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Hú,nagyon szépen köszönöm, h időt szántál rá/rám és megcsináltad. Kérhetnék hozzá egy kis magyarázatot? Ami az Application.ProcessMessages és a repaintot illeti?

(Ja és öregebb delphit használok lehet az a gond. Forráskódilag látom, h azt csinálja amit írtam, csak a képernyőn nem pont az jelenik meg nekem. Nálam úgy néz ki, h 500*500-ra generál random pontokat a legszélső 1 pixel széles sávot kihagyva. Szóval ha nem így kéne kinéznie leírnád h melyik verziójú delphit használtad? )

2015. dec. 28. 12:35
 5/8 SimkoL ***** válasza:

Delphi 7 - egyik legjobb -

myPixel.X := Random(PaintBox1.Width) + 1;

myPixel.Y := Random(PaintBox1.Height) + 1; soha nem lesz 0 az értékük, eredetileg kapott egy keretet és így maradt.

myPixel.X := Random(PaintBox1.Width + 1)...., így már nem marad le a széle.

Repaint -> újrarajzol

Application.ProcessMessages -> feldolgozza (engedi feldolgozni) a program közben érkező üzeneteket - vizuális megjelenítés -.

Kimaradt a FormCreate eljárásból a Randomize, de szerintem értelemszerűen beleírtad, gondolom :)

2015. dec. 28. 16:27
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

És még egy utolsó kérdésem lenne.

Néha úgy tűnik nekem mintha nem generálna ki annyi véletlen pontot mint ami megvan adva. Ez lehet attól h egymásra generálja ki őket? Vagy, h lehetne ezt kiküszöbölni?

(És mennyire lenne bonyolult azt kivitelezni, h mindig az adott méret kozepéről kezdjen el pontokat rajzolni? )

2015. dec. 28. 21:17
 7/8 SimkoL ***** válasza:

Természetesen megoldható, kell egy dinamikus TPoint típusú tömb és minden generálásnál ellenőrizni kell, hogy szerepel-e a tömbben, ha igen újat generálsz. Természetesen meg lehet oldani mással is, nem tudom mennyire vagy jártas a Delphi-ben.

A második kérdést talán kifejthetnéd jobban, azt szeretnéd, hogy egy 500x500-as négyzet közepéről indulna és egy algoritmus alapján terjeszkedne ?

2015. dec. 28. 23:06
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Hát nem túlzottan, ezért is vannak ilyen kérdéseim. Mert alapvető ismeretek hiányoznak, h mit hogyan lehetne kivitelezni. Ilyen programokból tanulgatok. Variálok, értelmezem stb. Persze alapok vannak.

Az nem olyan fontos. Az elképzelés az volt, hogy 50*50-es "négyzetbe" kezd a program generálni. Ennek a négyzetnek közepéből kiindulva szórná a pontokat. Majd ha a negyzet szélére kerülne pont, akkor azt "eldobná (vagy kifehérítené)" és növelné megint 50-el a négyzetet. Ekkor a százszor százas négyzet közepétől indulva kezdené el megint szórni a pontokat. Szóval a hely annyira nem random. A kiindulási pont fix a többi a véletlen.

2015. dec. 28. 23:55

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!