Sosds.sk



4. Számítógépes grafika a programozásban

A számítógépes grafika segítségével képeket, rajzokat és animációkat jeleníthetünk meg a programokban. Pythonban a tkinter modul Canvas objektuma segítségével tudunk képeket készíteni a fájlokból képet megjeleníteni.

Minden alakzat kirajzolásakor bizonyos pontok koordinátáit kell megadnunk. A kép koordinátarendszerének kezdőpontja a bal felső sarokban található. Az x koordináta kifejezi a ponttávolságát a kép bal szélétől, az y koordináta a pont távolságát a kép tetejétől:

[pic]

Alakzatok rajzolása:

canvas.create_line(x1, y1, x2, y2, fill=”szín”, width=w)

Adott színű és w pont vastagságú vonalat rajzol az (x1, y1) pontból az (x2, y2) pontba. Több pont koordinátáit is megadhatjuk.

canvas.create_rectangle(x1, y1, x2, y2, outline=”szín”, fill=”szín”, width=w)

Téglalapot rajzol, amely bal felső sarka az (x1, y1) pontban, jobb alsó sarka pedig az (x2, y2) pontban található. A körvonal színét és vastagságát az outline és a width paraméterek adják meg.

canvas.create_oval(x1, y1, x2, y2, outline=”szín”, fill=”szín”, width=w)

Ellipszist rajzol, amely köré írt téglalap bal felső sarka az (x1, y1) pontban, jobb alsó sarka pedig az (x2,  y2) pontban található.

canvas.create_text(x, y, text=”szöveg”, fill=”betűszín”, font=(betűtulajdonságok), angle=f)

Szöveget jelenít meg (x, y) középponttal, f fokkal elforgatva. A betűtulajdonságok a betűtípus nevével kezdődnek, ezt követi a méret, majd a bold, italic vagy underline szavak kövér, dőlt és aláhúzott szöveg írására. Pl.: (”Comic Sans MS”, 24, ”bold”).

Kép megjelenítése fájlból:

kep=tkinter.PhotoImage(file=”fájl neve”)

Létrehoz egy kép objektumot, amely tartalmát egy png vagy gif formátumú fájlból olvassa be.

canvas.create_image(x, y, image=kep)

Megjeleníti a képet, a kép középpontja az (x, y) koordinátákon lesz.

Az alakzatok módosítása

Az alakzatokat azonosítójukon keresztül érhetjük el. Az azonosító lehet:

• az a szám, amit az alakzatot létrehozó utasítás ad vissza eredményként

• az a szöveg, amit az alakzat létrehozásakor a „tags” paraméter után adtunk meg

• az „all” szó, amely minden alakzatra vonatkozik

canvas.delete(azonosító) - megszünteti az adott alakzatot.

canvas.move(azonosító, dx, dy) - elmozdítja az alakzatot vízszintes irányban a dx, függőleges irányban a dy távolsággal.

canvas.itemconfig(azonosító, paraméterek) - megváltoztatja az alakzat opcionális paramétereit (pl. fill, width, stb.)

canvas.coords(azonosító, koordináták sorozata) - megváltoztatja az alakzat koordinátáit. A koordináták sorozata páros számú számból áll.

Egyszerű animáció készítése

Animációt a kirajzolt alakzatok fokozatos módosításával vagy mozgatásával készíthetünk.

1. módszer: a módosítást vagy mozgatást egy cikluson belül végezzük. Ilyenkor minden változtatás után hívni kell a canvas.update() függvényt a képernyő tartalmának átrajzolására. A program futását a canvas.after(idő) függvénnyel lassíthatjuk, a várakozási időt ezredmásodpercben adjuk meg.

2. módszer: a módosítást vagy mozgatást egy függvényen belül végezzük. A függvényt egyszer hívjuk a főprogramból, majd a függvény végére írjuk a canvas.after(idő, függvény) utasítást, amely betervezi a függvény ismételt végrehajtását valamennyi idő elteltével.

Események

A program különböző eseményekre tud reagálni. Az egyes eseményekhez függvényeket kapcsolhatunk. Az esemény bekövetkezte után a program végrehajtja a hozzá kapcsolt függvényt.

canvas.bind(”esemény neve”, függvény neve) – függvény kapcsolása az eseményhez

canvas.bind_all(”esemény neve”, függvény neve) – függvény kapcsolása billentyűzettel kapcsolatos eseményhez

canvas.unbind(”esemény neve”) – a kapcsolat megszüntetése

|Esemény neve |Leírás |

|, , |Az egér bal, középső illetve jobb gombjának lenyomása. |

| | |

| |Az egér mozgatása. |

|,… |Az egér mozgatása lenyomott gombbal. |

| |Az egér gombjának felengedése. |

| |A felhasználó lenyomta az Enter billentyűt. További billentyűkódok: Cancel (Break billentyű), |

| |BackSpace, Tab, Shift_L (bal Shift), Control_L (bal Control), Alt (Alt), Pause, Caps_Lock, |

| |Escape, Prior (Page Up), Next (Page Down), End, Home, Left, Up, Right, Down, Print, Insert, |

| |Delete, F1,... F12, Num_Lock, Scroll_Lock. |

| |Tetszőleges billentyű lenyomása. |

|a |A felhasználó lenyomta az "a" billentyűt. A legtöbb nyomtatható karakter használható, kivétel |

| |a szóköz () és a kisebb jel (). |

Az eseményhez kapcsolt függvénynek egy paraméterrel kell rendelkeznie, amelybe a program behelyettesíti az esemény részleteit (pl. hová kattintott a felhasználó vagy melyik billentyűt nyomta le: e.x, e.y, e.char).

Feladat:

1. Készítsetek programot egyszerű animációra – forgó szöveg, ablakon belül mozgó szöveg

2. Készítsetek programot, amely oda rajzol valamit, ahová a felhasználó kattintott.

-----------------------

[pic][pic]

[pic]

y

x növekedik

x csökken

y csökken

y növekedik

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery