Képfájlok beolvasása és megjelenítése

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Képfájlok beolvasása és megjelenítése"

Átírás

1 Programozás Képfájlok beolvasása és megjelenítése Előzmények Eddig a Rajzolás, Grafika és az Interaktivitás lap programját készítettük el. Ennek a programnak néhány új funkcionalítással ellátott verziója letölthető a szerverről. Nevezzük át a GrafikaQtvel könyvtárat pl. GrafikaQtvel_rajzolas-ra. A tanszéki fájl szerverről töltsük le, és bontsuk ki a GrafikaQvel_fraktal.7z fájlt, ami a program a Visual Studio 2016, és QTCreator alatt lefordítható verziója. Ez annyiban különbözik az előző Interaktivitás lapot használó programtól, hogy van benn néhány pótlólagos segítő függvény pl. az eredeti koordináták visszaállítására. A Camvas osztály lehetőségei is kibővültek azzal, hogy képes a gumiszalag kezelésére és a gumiszalagos kiválasztás végén egy SIGNAL-ban elküldi a kiválasztott terület adatait egy QRect strukturában. Ez használható bármilyen Canvas objektumon kijelölésre. Egy új függvény: void AllowSelections(bool allow) _selectionallowed = allow; engedélyezi, vagy letiltja a kijelölést. A MousePressEvent(), MouseMoveEvent() és MouseReleaseEvent() pedig lekezeli azt, illetve a LastPosChanged(QMouseEvent *) melett elküldi a void RectangleSelected(QRect); SIGNAL-t is. Bónuszként a Fraktál lap is él, és a fraktálok közül a Mandelbrot halmaz megjelenítésére és abba belenagyításra is képes. Ez sok apró feladat megoldását követelte meg 1 - akit érdekel nézze meg a kódot és, ha kérdése van szívesen segítek de minket csak annyi érint, hogy a kép pontjainak megjelenítéséhez a Canvas::SetPixel(QPoint,QColor) függvényt használjuk. 1 Pl.a számolás félbeszakítását, hogy egy újat kezdhetjünk.

2 Programozás Képeken végezhető műveletek 1. Betöltés fájlból. Sok képformátum van ezek közül a Qt nem mindegyiket támogatja. 2. Kiírás fájlba adott képformátumba. 3. Az eredeti, vagy a feldolgozott kép megjelenítése 4. Nagyítás/kicsinyítés 5. Forgatás speciális szögekkel (90 o, -90 o, 180 o ) 6. Tükrözés vízszintesen és függőlegesen 7. Forgatás tetszőleges szöggel 8. Beillesztés a látható képterületbe 9. 1:1 méretű megjelenítés. Ekkor lehet, hogy az egész kép nem fér bele a látható részbe, ilyenkor általában ide-oda lehet húzogatni a látható részt 10. Speciális fotószűrők alkalmazása: pl. élesítés, elmosás, negatív kép, átszínezés 11. Élkeresés 12. Képek összerakása egy képpé (rétegek kezelése), miközben az egyes pixeleken az összetevő képek pixeleiből adott szabályok szerint határozzuk meg. Ilyen szabály lehet pl., hogy csak az eredmény a sötétebb pixel lesz. 13. A QImage (QPixmap) ezen feladatok mindegyikének megoldására alkalmas. Mi a QImage-t fogjuk használni 2. Koordináta transzformációk A QMatrix osztály Egy 2D transzformációt speciális mátrixokkal írhatunk le. Ezek a QMatrix és a QTransform. A QMatrix csak 2D transzformációkat tesz lehetővé, a QTransform tetszőleges 3D transzformációkat 2D-ben. Egy QMatrix így néz ki: 2 Az itt bemutatott függvényeknek más túlterhelt változataik is lehetnek, és a QImage-nak sokkal több függvénye van, ami hasonló feladatokra használható. Pl. a load() függvénynek két verziója van és képek betölthetőek a loadfromdata() függvényekkel is.

3 Programozás A transzformációkat mátrix szorzással kaphatjuk meg. Ha pl. r = (x, y) a transzformáció előtti, r' = (x', y') a transzformáció utáni koordináták és m egy QMatrix, akkor r' = m r, ill. x'= m11 x + m21 y + dx és x'= m22 y + m12 x + dy A visszatranszformáláshoz az inverz mátrixot használjuk, amit az m-ből az inverted() függvényével kaphatunk meg. A mátrix elemeit megadhatjuk a konstruktorokban: QMatrix(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy) QMatrix(const QMatrix &matrix) vagy később is a void QMatrix::setMatrix(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy) függvénnyel, illetve az egyes transzformációkhoz tartozó függvényekkel. A mátrix elemeit az m11( ), m12( ),m13( ), dx( ), ill. dy( ) függvényekkel kérhetjük le. A mátrix determinánsát a determinant() függvény. Az isinvertible() megmondja a mátrix invertálható e. A transzformációk lehetnek: eltolások, forgatások, tengelyre, vagy pontra tükrözések és nyírási deformációk. amikkel lényegében egy ferdeszögű koordinátarendszerre térünk át. Az y tengelyhez derékszögű rendszerben az x = 0 érték tartozik. Az x irányú sx tényezőjű nyírás azt jelenti, hogy az y tengely Y magasságban levő pontja az eredeti x tengelytől sx * Y távolságra kerül. Az sx=1.0 érték az y tengely 45 fokos szögű elforgatásának felel meg 3. Pl egy 100 x 100pixeles négyzetre: 3 Ez a képernyő, illetve egy widget koordinátarendszerében, ahol az y tengely lefelé mutat tehát az x tengelyre tükrözve van balra forgatásnak felel meg.

4 Programozás sx=0, sy=0 sx=1.0, sy=0 sx=0, sy=1 Az egyes transzformációk megadásának függvényei: translate(qpointf &eltolás) eltolja a koordinátarendszert egy vektorral rotate(qreal szög_fokokban) Egy fokokban mért szögű elforgatás QMatrix-át a rotate(qreal ) írja le. Pozitív szög az óramutató járásával ellentétes irányú forgatást jelent matematikailag. Mivel azonban a koordinátarendszer y tengelye a Widgetek esetében általában lefelé mutat, vagyis a koordinátarendszer a normál koordinátarendszereink tükörképe, ezért a pozitív szög jobbra fog forgatni. scale(qreal x_szorzó, qreal y_szorzó) átskálázza a koordinátarendszert a két szorzóval, vagyis minden a koordináta a szorzóval több pixelt jelent. shear(qreal sx, qreal sy) nyíró transzformációt végez Több transzformáció egymás utáni elvégzése az egyes transzformációs mátrixok szorzatával írható le. A reset( ) függvény egységmátrixot csinál a mátrixból, ahol az x, y eltolások is 0-k és az isidentity() függvény megmondja, hogy a mátrix az egységmátrix-e. A sokszorosan túlterhelt map( ) függvények az argumentumaiknak megfelelő mennyiségeket (valós, vagy pixel koordináták, QPoint, QPointF,QLine, QLineF,QPolygon,QPolygonF, QRect, QRectF, stb) transzformálják a mátrixszal. Természetesen a szokásos mátrix műveletek is definiálva vannak. A QTransform osztály Bár a QMatrix-al sok transzformáció elvégezhető ezek mind a 2D síkbeli transzformációk. A QTtransform mátrix azonban valódi 3 x 3-as mátrix. Rendelkezik a QMatrix minden transzformációjával (rotate(), scale(), shear() és translate()), de térbeli transformációkra is ad lehetőséget. Pl. egy alakzatot/képet elforgathatunk vele bármelyik. tengely körül: QTransform &QTransform::rotate(qreal szög_fokban, Qt::Axis tengely = Qt::ZAxis) A tengely lehet Qt::XAxis, Qt::YAxis és Qt::ZAxis. A QTransform &QTransform::rotateRadian(qreal szög, Qt::Axis tengely = Qt::ZAxis)

5 Programozás függvény radiánban megadott szöggel forgat el. A forgatás iránya most is attól függ, hogy valós, vagy képernyő/widget koordinátákat használunk. A mátrixelemek ugyanúgy megadhatóak a konstruktorokban, illetve a setmatrix() függvénnyel, mint a QMatrix esetében: QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33 = 1.0) QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy) QTransform(const QMatrix &matrix) void setmatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33) Képek megjelenítése A QT-ben a QTransform a javasolt transzformációs mátrix. QPainter-rel végezve a transzformációkat: A QTransform és QMatrix osztályok leírják a transzformációkat, de a képek megjelenítését a QPainter osztály végzi. A kirajzolás során a QPainter objektumok is QMatrix-okat, illetve QTransform-ot használnak. A QPainter transzformációi megfelelnek a mátrixok transzformációinak. Pl. egy szöveget 45 fokos szögben elforgatva így írhatunk ki: void SimpleTransformation::paintEvent(QPaintEvent *) QPainter painter(this); painter.rotate(45); painter.setfont(qfont("helvetica", 24)); painter.setpen(qpen(qt::black, 1)); painter.drawtext(20, 10, "Ferde szöveg"); Ahogy a mátrixoknál több transzformációt is végezhetünk egyszerre egymás után meghívva az egyes transzformációs függvényeket. A QPainter transzformációkat pl. a következő egyszerű teszt programmal lehet kipróbálni (sp1,sp2 az egyes (Double) Spin Boxok nevei fentről lefele, a btn pedig a Tool Button):

6 Programozás A program GUI-ja main.cpp #include "pteszt.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) QApplication a(argc, argv); Pteszt w; w.show(); return a.exec(); pteszt.h #ifndef PTESZT_H #define PTESZT_H #include <QtWidgets/QMainWindow> #include "ui_pteszt.h" class Pteszt : public QMainWindow Q_OBJECT public: Pteszt(QWidget *parent = 0); ~Pteszt(); protected: void paintevent(qpaintevent *event) Q_DECL_OVERRIDE; private: Ui::PtesztClass ui; private slots: void on_btn_clicked(); ; #endif // PTESZT_H

7 Programozás pteszt.cpp #include "pteszt.h" #include <QPainter> #include <qcolor.h> Pteszt::Pteszt(QWidget *parent) : QMainWindow(parent) ui.setupui(this); Pteszt::~Pteszt() void Pteszt::paintEvent(QPaintEvent *event) QPainter painter; painter.begin(this); qreal sx, sy; sx = ui.sp1->value(); sy = ui.sp2->value(); painter.translate(ui.sp4->value(), ui.sp5->value()); painter.shear(sx, sy); painter.rotate(ui.sp3->value()); painter.scale(ui.sp6->value(), ui.sp7->value()); painter.setpen(qpen(qt::blue, 3, Qt::DashLine)); painter.setbrush(qbrush(qt::red, Qt::BDiagPattern)); painter.drawrect(20, 20, 200, 100); painter.end(); void Pteszt::on_btn_clicked() update(); A Qimage transzformációi Ezekkel a transzformációkkal akár egy képet is rárajzolhatnánk a Canvas-ra a QPainter::drawImage() függvénnyel. Ennek azonban az a hátránya, hogy néhány 4 művelet OSX és/vagy Windows alatt nem működne, illetve az, hogy minden paintevent-ben újra el kellene végezni a transzformációkat a teljes képen, ami időigényes. Ehelyett kihasználjuk, hogy ugyanezeket a műveleteket a QImage is ismeri (sőt ezeknél többfélét is), ezért elő tud állítani magából egy másik, transzformált QImage-t, amit azután megjeleníthetünk. A következő paintevent-ben ezt a QImage-t már csak ki kell rajzolni, nem kell újra elvégezni a képen a transzformációt. Ebből következően két QImage-re van 4 általunk egyébként nem használt

8 Programozás szükségünk: az egyik az eredeti fájlból betöltött, a másik a transzformált. A transzformált QImage-t előállító függvények a következők 5 : Tükrözés függőlegesen, vagy vízszintesen mirrored(bool horizontal = false, bool vertical = true) Ez egy tükrözött képet ad vissza. Az eredeti kép nem változik meg. Átméretezés: QImage QImage::scaled(const QSize &téglalap, Qt::AspectRatioMode aspectratiomode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformmode = Qt::FastTransformation) Ez egy olyant átméretezett képet ad vissza, aminek a méretét a megadott téglalap adja meg az aspectratiomode (oldal arány) alapján: Itt a szaggatott vonal jelzi a téglalapot. A használt módszert a transformmode adja meg. Ha ez Qt::FastTransformation, akkor a simítás nélküli transzformáció történik, szemben a Qt::SmoothTransformation esetében, ami bilineáris szűrést használ. Egyik módszer sem igazán alkalmas nagy nagyításokra. Az eredeti kép most sem változik meg. Van olyan változata is, ahol a QSize helyett a szélességet és magasságot külön adhatjuk meg: QImage QImage::scaled(int width, int height, Qt::AspectRatioMode aspectratiomode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformmode = Qt::FastTransformation). Hasonló tarszformációkat végeznek a QImage scaledtowidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) QImage scaledtoheighth(int height, Qt::TransformationMode mode = Qt::FastTransformation) 5 A szokásos kapcsolat a QMatrix és a QImage transzformációs függvényei között: pl. a scale() a mátrix transzformáció függvénye, a scaled() viszont egy scale()-d mátrixszal előállított másik képet ad.

9 Programozás függvények is. Ezek megtartják az oldalak arányát. Képek elforgatása, eltolása, nyírása, nagyítása és kicsinyítése mátrixokkal írható le. Pl egy balra 90 fokos elforgatás programja: void Canvas::rotateLeft90() QMatrix m; m = m.rotate(-90); _actimage = _actimage.transformed(m, Qt::SmoothTransformation); A kép ilyen transzformációját a QMatrix osztállyal adhatjuk meg és a transformed() függvényt kell meghívni hozzá: QImage QImage::transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) A koordinátarendszer átskálázását is leírhatjuk mátrixokkal. Ehhez ugyancsak a transformed() függvényt és egy nagyítási mátrixot használunk, amit a QMatrix QMatrix &QMatrix::scale(qreal sx, qreal sy) függvénye ad meg. A QTransform mátrixot csak a transformed() függvényben használjuk. Képformátumok és a QImage Ahogy már beszéltünk róla a QIamge a képformátumok közül az alábbiakat alapból ismeri: BMP Windows Bitmap Read/write GIF Graphic Interchange Format (optional) Read JPG Joint Photographic Experts Group Read/write JPEG Joint Photographic Experts Group Read/write PNG Portable Network Graphics Read/write PBM Portable Bitmap Read

10 Programozás PGM Portable Graymap Read PPM Portable Pixmap Read/write TIFF Tagged Image File Format Read/write XBM X11 Bitmap Read/write XPM X11 Pixmap Read/write Más képformátumok beolvasásához és írásához készíthetünk külső modulokat (plugin), amikkel kiegészíthetjük a QImage funkcionalítását. Az ismert képfájlokat a load(const QString &filename, const char *format = nullptr) függvénnyel fogjuk betölteni 6. Képeket betölthetünk fájlból, vagy a forrásprogramhoz tartozó resource-ból is. Az utóbbi esetben a fájl neve helyett a resource nevét kell használni, ami mindig ':/'-el kezdődik. Pl. a GrafikaQT-vel program esetében a resource-ban található 7 egyik kép neve :/GrafikaQTvel/ellipse.png. A QImage-ben tárolt kép pixelekből áll, tehát raszteres grafika. Minden pixelhez egy egész szám tartozik. Ennek a mérete a kép bit-mélységétől függ, amit a depth() függvénnyel kérdezhetünk le. Egy adott bit-mélységhez több formátum is tartozhat. A formátumot a format() függvénnyel kérhetjük le, ami egy QImage_Format enum értékeit adja vissza. A beolvasott képeket átszínezéseket kivéve - ugyanúgy manipuláljuk a formátumtól függően. A bit-mélység és az integer méretének kapcsolata: 1 bit/pixel (egyszínű monochrome kép) 1 bájtban 8 pixel adatai vékony- és vastag végű formátumban 8. Maguk a színek egy két elemű táblázatban vannak megadva. Ez egy indexelt formátum 8 bit/pixel 256 szürkeárnyalatos, vagy 256 elemű szín-táblázatot használó formátumok 6 Betölthetnénk a megfelelő konstruktorral is vagy a loadfromdata() függvénnyel, de ezeket nem fogjuk használni. 7 A jelenlegi QT verziók a resourc-okat a végrehajtható fájlba rakják bele, nem külön fájlként használjék. 8 Vastag végű (big endian) legnagyobb helyi értékű bit a bal oldali pixel, vékony végű (little endian) ez a jobb oldali pixel.

11 Programozás bit/pixel pixelenként 2 bájtot (_int16) elfoglaló, a három szín komponenst (R,G és B) 4-4-4, vagy biten megadó formátum. A nek van egy másik variációja, ahol még egy 4 bites alfa csatorna is meg van adva: Ez a formátum egy előszorzott ARGB formátum, ami azt jelenti, hogy az R,G és B komponensek már eleve meg vannak szorozva az alfa csatorna értékének 255-ödével. Az formátumnál a fennmaradó bit mindig bit/pixel pixelenként 4 bájtot (_int32) elfoglaló formátumok. A nem használt bitek mindig 0-k: előszorzott ARGB, RGB, előszorzott ARGB, és előszorzott ARGB, RGB 32 bit/pixel. pixelenként 4 bájtot (_int32) elfoglaló formátumok RGB, felső 8 bit 1-es, AARRGGBB, előszorzott ARGB formátum 9, bájt rendezett formátumok 10 : RRGGBBAA (big endian), AABBGGRR (little endian) és ezek előszorzott változata A Qimage alapértelmezett konstruktora egy NULL képet állít elő.null képet kaphatunk más, méreteket és formátumot is megadó konstruktorokkal is, ha a szükséges kép memória nem allokálható. Ezt az isnull() függvénnyel ellenőrizhetjük. Mi kizárólag nem indexelt RGB képekkel foglalkozunk, és a kép formátumának vagy QImage::Format_RGB32, vagy QImage::Format_RGB888 ot állítunk be. Amikor egy adott méretű QImage-t hozunk létre nem egy másik képből, akkor az egyes pixelek értéke határozatlan lesz. Azokat kirajzolás előtt mindig be kell állítani, pl. a fill() függvények valamelyikével A Kép lap programja A GUI módosítása A szokásos módon kapcsoljunk át a bal oldalon a Képek oldalra, azután adjunk hozzá a jobb oldali stckpages Stacked Widget-hez egy új, 5. lapot (currentindex = 4) és nevezzük át pnlimages re! Rakjunk rá erre a lapra egy widgetet, léptessük elő Canvas-szá, nevezzük át canvas3-á és a lap elrendezését állítsuk vízszintesre! Mentsük el a változtatásokat! 9 Előfordulhat, hogy RR, GG vagy BB > AA, ekkor a viselkedés nem definiált. 10 Ha a megfelelő bájt sorrendű gépen olvassuk be bájtonként, akkor ugyanazt a színt adja meg mindkettő.

12 Programozás A grafikaqtvel.cpp/.h módosítása Adjuk hozzá az 5. lapra kapcsolást az on_tbxmenu_currentchanged(int index) SLOT-hoz! Adjunk SLOT deklarációkat az összes widget lekezeléséhez grafikaqtvel.h header fájlhoz! Ezek a clicked() SIGNAL-ok a gombokhoz, a, textchanged(qstring) signal a beviteli mezőhöz, a currentindexchanged(int index) signal a lenyíló Combo Box-hoz és a valuechanged() signal a QDoubleSpinBox és QSlider objektumokhoz. A Beolvasás és a Megjelenítés gomb legyen alapból inaktív. A Beolvasás gombot akkor tegyük aktívvá, ha egy létező kép fájl neve van a beviteli mezőben és a fájl még nincs bent a memóriában, más esetekben legyen inaktív. Az ehhez tartozó feltételek tehát: a gomb aktív, ha - a beviteli mező szövegét kézzel átírtuk (és nem a böngészés (btnimagebrowse) gomb írta át) - a beviteli mezőben levő szöveg egy létező kép fájl neve - ez a név nem azonos a memóriában levő fájl nevével A Megjelenítés gomb akkor aktív, ha van kép a memóriában. Amikor a btnimagebrowse gombbal választottunk fájlt, akkor a képet azonnal olvassuk be a _loadedimage-be, függetlenül attól, hogy mi van a memóriában. A fentiekhez egyfelől szükségünk van a beolvasott fájl nevére. Adjunk hozzá egy QString _imagename; változót a GrafikaQTvel osztály privát részéhez. Másfelöl, amikor a beviteli mező szövegét átírja a böngészéssel megadott név a Beolvasás gomb inaktív kell, hogy legyen. Ehhez elég, ha az _imagename-et előbb állítjuk be, mint a beviteli mező szövegét Írjuk meg a btnimageread gombhoz tartozó SLOT-ot a fájl beolvasására, a btnimagebrowse gombhoz tartozó SLOT-ot a fájl böngészésére, és az edtimagefile bevitelő mezőhöz tartozót a szövegváltoztatás lekezelésére! A fájl beolvasó gomb csak akkor aktív, amikor érvényes fájl név van a beviteli mezőben. Először elmenti ezt, majd beolvastatja és megjelenítteti a képet a Canvas-szal.

13 Programozás void GrafikaQTvel::on_btnImageRead_clicked() _imagename = ui.edtimgfile->text(); // név elmentése if (ui.canvas3->readimage(_imagename)) // kép beolvasás és megjelenítése ui.btnimagedisplay->setenabled(true); else ui.btnimagedisplay->setenabled(false); A böngészéshez kiindulásként átmásolhatjuk a kódot a btnbrowse2_clicked() függvényből, csak a fájl típusokat kell átírni a kép típusokra 11. void GrafikaQTvel::on_btnImageBrowse_clicked() QString filename = QFileDialog::getOpenFileName(this, QString("Kép fájl megnyitása"), "./", QString("Kép fájlok (*.BMP,*.GIF,*.JPG,*.JPEG,*.PNG);;X11 kép fájlok (*.PBM,*.PGM, *.PPM, *.XBM,*.XPM)" )); if (!filename.isempty()) // volt létező fáj név ui.edtimgfile->settext(filename); Ezután az if be berakjuk a kódot a kép nevének letárolására és a kép betöltésére: if (!filename.isempty()) // volt létező fájl név _imagename = filename; // név elmentése on_btnimageread_clicked(); // kép beolvasás és megjelenítése ui.edtimgfile->settext(filename); // kép név a beviteli mezőbe Itt felhasználtuk a betöltő gomb SLOT függvényét, hogy ne kelljen a beolvasási kódot megismételni 12.. A beviteli mező programja ugyanaz, mint az edtfile_textchanged() volt kiegészítve a beolvasás gomb feltételes aktívvá tételével. A megjelenítés gombbal itt nem foglalkozunk: void GrafikaQTvel::on_edtimageFile_textChanged(QString s) bool benable =!s.isempty() && QFile::exists(s); ui.btnimagedisplay->setenabled(benable); 11 Egy kereskedelmi forgalomba kerülő programban minden kép típushoz csak egy bejegyzés tartozna, itt egyszerűsítettünk. 12 Attól még, hogy a gomb inaktív a SLOT függvénye programból használható.

14 Programozás A Canvas osztály módosítása Egészítsük ki tehát a Canvas osztályt képek kezelésére! A fentiek szerint két QImage-re van szükségünk. Adjunk hozzá két QImage-et, egyet (_loadimege) a betöltött kép tárolására, a másikat (_actimage) az aktuális megjelenítéshez a private részhez: QImage _loadedimage; // lemezről betöltött eredeti kép QImage _actimage; // aktuális kép

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra: A Rajzolás lap A rajzolás lap elemi rajzolási lehetőségek bemutatására szolgál. A rajzolás a jobboldali pnlright widget egyik lapjára rakott widgetre történik. A pnlright egy több lapot tartalmazó widget

Részletesebben

bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató

bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató canvas.h #pragma once #include #include #include #include #include #include #include // terület kiválasztáshoz struct RajzParameterek

Részletesebben

if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true);

if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true); Elmosás (antialias) struct RajzParameterek int penwidth = 1; Qt::PenStyle penstyle = Qt::SolidLine; Qt::PenCapStyle pencap = Qt::FlatCap; Qt::PenJoinStyle penjoin = Qt::MiterJoin; Qt::BrushStyle brushstyle

Részletesebben

Grafikus Qt programok írása segédeszközök nélkül

Grafikus Qt programok írása segédeszközök nélkül Grafikus Qt programok írása segédeszközök nélkül Grafikus felületű Qt programokat ahogy láttuk, készíthetünk egy egyszerű szövegszerkesztővel is, bár a Qt jó támogatást ad a grafikus felület grafikus tervezésére

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 4. Előadás Dr. Bécsi Tamás A RadioButton komponens Tulajdonságok: bool Checked Állapotjelző két állapot esetén: (true: bejelölve,false: nem bejelölve) Események: Esemény

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Memóriajáték 1. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 memorygame Játék közben 2 memorygame Kártyák kiválasztása

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Grafikus felületű alkamazások készítése Bevezetés I. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2009 1 www.trolltech.com

Részletesebben

I. VEKTOROK, MÁTRIXOK

I. VEKTOROK, MÁTRIXOK 217/18 1 félév I VEKTOROK, MÁTRIXOK I1 I2 Vektorok 1 A síkon derékszögű koordinátarendszerben minden v vektornak van vízszintes és van függőleges koordinátája, ezeket sorrendben v 1 és v 2 jelöli A v síkbeli

Részletesebben

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka Elemi alkalmazások fejlesztése III Ajánlott ir odalom Egy ablakos alkalmazás készítése I. C++ / Qt felhasználásával Qt dokumentáció online: www.trolltech.com lokális változat: Kdevelop help vagy /usr/share/doc...

Részletesebben

QT Grafika Az alap alkalmazás felhasználói felülete

QT Grafika Az alap alkalmazás felhasználói felülete QT Grafika Az alap alkalmazás felhasználói felülete Az alábbiakban létrehozzuk azt a GUI-t, amit a továbbiakban használni fogunk. Ennek során áttekintünk néhány hasznos GUI elemet és azok használatát.

Részletesebben

Widget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia?

Widget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia? A Canvas widget Widget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia? 1. Más widgetekre rárakható legyen, 2. Ha a befoglaló (szülő) widget mérete változik az ő mérete is

Részletesebben

3D-s számítógépes geometria és alakzatrekonstrukció

3D-s számítógépes geometria és alakzatrekonstrukció 3D-s számítógépes geometria és alakzatrekonstrukció Tesztkörnyezet I http://cg.iit.bme.hu/portal/node/312 https://portal.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr. Salvi Péter BME, Villamosmérnöki

Részletesebben

Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3.

Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3. Qt rajzolás munkafüzet Elemi Alkalmazások fejlesztése 3. 1. fejezet Impresszum Qt rajzolás munkafüzet (C)2006 Zimler Attila Tamás Visszajelzéseket szivesen fogadok. A munkafüzet

Részletesebben

Tömörítés, csomagolás, kicsomagolás. Letöltve: lenartpeter.uw.hu

Tömörítés, csomagolás, kicsomagolás. Letöltve: lenartpeter.uw.hu Tömörítés, csomagolás, kicsomagolás Letöltve: lenartpeter.uw.hu Tömörítők Tömörítők kialakulásának főbb okai: - kis tárkapacitás - hálózaton továbbítandó adatok mérete nagy Tömörítés: olyan folyamat, mely

Részletesebben

Elemek a kiadványban. Tervez grafika számítógépen. A képek feldolgozásának fejl dése ICC. Kép. Szöveg. Grafika

Elemek a kiadványban. Tervez grafika számítógépen. A képek feldolgozásának fejl dése ICC. Kép. Szöveg. Grafika Elemek a kiadványban Kép Tervez grafika számítógépen Szöveg Grafika A képek feldolgozásának fejl dése Fekete fehér fotók autotípiai rács Színes képek megjelenése nyomtatásban: CMYK színkivonatok készítése

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Bevezetés Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 A Qt assistant nyitó ablaka www.trolltech.com 2 Alkalmazás

Részletesebben

3D-s számítógépes geometria és alakzatrekonstrukció

3D-s számítógépes geometria és alakzatrekonstrukció 3D-s számítógépes geometria és alakzatrekonstrukció 3a. Tesztkörnyezet I http://cg.iit.bme.hu/portal/node/312 https://portal.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Salvi Péter BME, Villamosmérnöki

Részletesebben

QT Grafika az alap alkalmazás (GrafikaQtvel) működése

QT Grafika az alap alkalmazás (GrafikaQtvel) működése QT Grafika az alap alkalmazás (GrafikaQtvel) működése Állapot mentése és visszaállítása Intézzük el, hogy a program megjegyezze a beállításainkat, beleértve az ablak pozícióját és indításkor az utoljára

Részletesebben

Programozás C++ -ban

Programozás C++ -ban Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több

Részletesebben

OpenGL és a mátrixok

OpenGL és a mátrixok OpenGL és a mátrixok Róth Gergő 2013. március 4. Róth Gergő 1/20 A rajzoláskor a videókártya minden csúcson végrehajt egy transzformációt. Mire jó? Kamera helyének beállítása Egy objektum több pozícióra

Részletesebben

3D koordináta-rendszerek

3D koordináta-rendszerek 3D koordináta-rendszerek z z y x y x y balkezes bal-sodrású x jobbkezes jobb-sodrású z 3D transzformációk - homogén koordináták (x, y, z) megadása homogén koordinátákkal: (x, y, z, 1) (x, y, z, w) = (x,

Részletesebben

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához Algoritmusok raszteres grafikához Egyenes rajzolása Kör rajzolása Ellipszis rajzolása Algoritmusok raszteres grafikához Feladat: Grafikai primitíveket (pl. vonalat, síkidomot) ábrázolni kép-mátrixszal,

Részletesebben

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban Mobil informatika gyakorlat 2. óra: NFC a gyakorlatban Mi az NFC? Near Field Communication Rövid hatótávolságú rádiófrekvenciás technológia (tipikusan 5-10 cm) 13,56 MHz frekvencia Az ISO/IEC 14443 szabvány

Részletesebben

Elemi alkalmazások fejlesztése III

Elemi alkalmazások fejlesztése III Elemi alkalmazások fejlesztése III Egy ablakos alkalmazás készítése I. C++ / Qt felhasználásával készítette: Szabóné Nacsa Rozália 1 Ajánlott irodalom Qt dokumentáció online: www.trolltech.com lokális

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba II 1. gyakorlat A grafikus könyvtár használata, alakzatok rajzolása 2014.02.10. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében Infobionika ROBOTIKA X. Előadás Robot manipulátorok II. Direkt és inverz kinematika Készült a HEFOP-3.3.1-P.-2004-06-0018/1.0 projekt keretében Tartalom Direkt kinematikai probléma Denavit-Hartenberg konvenció

Részletesebben

Programozás II gyakorlat. 4. Öröklődés

Programozás II gyakorlat. 4. Öröklődés Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési

Részletesebben

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése

Részletesebben

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc 14. fejezet OpenCL textúra használat Grafikus Processzorok Tudományos Célú Programozása Textúrák A textúrák 1, 2, vagy 3D-s tömbök kifejezetten szín információk tárolására Főbb különbségek a bufferekhez

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. május 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

Láthatósági kérdések

Láthatósági kérdések Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok

Részletesebben

Programozási nyelvek 2. előadás

Programozási nyelvek 2. előadás Programozási nyelvek 2. előadás Logo forgatás tétel Forgatás tétel Ha az ismétlendő rész T fok fordulatot végez és a kezdőhelyére visszatér, akkor az ismétlések által rajzolt ábrák egymás T fokkal elforgatottjai

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Egy ablakos alkalmazás készítése II. C++ / Qt / KDevelop felhasználásával készítette: Szabóné Nacsa Rozália lektorálta: Párniczky Krisztina 1 Fájlkezelés Olvasás 2 A

Részletesebben

Transzformációk. Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform

Transzformációk. Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform Transzformációk Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform Koordinátarendszerek: modelltér Koordinátarendszerek: világtér Koordinátarendszerek: kameratér up right z eye ahead

Részletesebben

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer Objektumok és osztályok Az objektumorientált programozás alapjai Rajzolás tollal, festés ecsettel A koordinátarendszer A vektorgrafikában az egyes grafikus elemeket (pontokat, szakaszokat, köröket, stb.)

Részletesebben

Photofiltre használata KAP képek javításához

Photofiltre használata KAP képek javításához Photofiltre használata KAP képek javításához A program innen letölthető angol nyelven: http://www.photofiltre-studio.com/pf7-en.htm A magyarosított verziót felbővítettem maszkokkal, keretekkel, kijelölési

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. MDI alkalmazás II. (Számla) Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 Számla felépítése fejléc tábla 2 Az alkalmazás

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

Bevezetés a programozásba előadás: Öröklődés

Bevezetés a programozásba előadás: Öröklődés Bevezetés a programozásba 2 5. előadás: Öröklődés emlékeztető Tagfüggvény struct koord { double x,y,r; void set(double ux, double uy) { x=ux; y=uy; r=sqrt(x*x+y*y); } Használat: koord k; k.set(4,5); Egységbezárás

Részletesebben

Programozás 6. Dr. Iványi Péter

Programozás 6. Dr. Iványi Péter Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak

Részletesebben

QLabel *label = new Qlabel("Hello Qt!",0);

QLabel *label = new Qlabel(Hello Qt!,0); #include #include int main(int argc,char **argv) QApplication app(argc,argv); QLabel *label = new Qlabel("Hello Qt!",0); app.setmainwidget(label); label->show(); return app.exec();

Részletesebben

Audio-video tartalom-előállítás 2. kis ZH tananyag (részlet) 2015/16 ősz

Audio-video tartalom-előállítás 2. kis ZH tananyag (részlet) 2015/16 ősz Audio-video tartalom-előállítás 2. kis ZH tananyag (részlet) 2015/16 ősz Disclaimer Feldolgozott témák: állóképek, vektorgrafikus képek/fontok, DVD Nagyon vázlatos, érdemes a leírt dolgoknak utánajárni!

Részletesebben

BME MOGI Gépészeti informatika 15.

BME MOGI Gépészeti informatika 15. BME MOGI Gépészeti informatika 15. 1. feladat Készítsen alkalmazást a y=2*sin(3*x-π/4)-1 függvény ábrázolására a [-2π; 2π] intervallumban 0,1-es lépésközzel! Ezen az intervallumon a függvény értékkészlete

Részletesebben

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor

Részletesebben

Pixel vs. Vektor. Pixelgrafikus: Vektorgrafikus:

Pixel vs. Vektor. Pixelgrafikus: Vektorgrafikus: Grafika Pixel vs. Vektor Pixelgrafikus: Pixelt (képpontot használ, ehhez tartozik színkód Inkább fotók Pl.: GIMP, PhotoShop, Paint Shop Pro, Paint Vektorgrafikus: Objektumokból építkezik, ezek tulajdonságát

Részletesebben

A Képszerkesztés témakör oktatása. Dr. Nyéki Lajos 2019

A Képszerkesztés témakör oktatása. Dr. Nyéki Lajos 2019 A Képszerkesztés témakör oktatása Dr. Nyéki Lajos 2019 ECDL / ICDL Using Image Editing Syllabus 2.0 This module sets out essential concepts and skills relating to the ability to understand the main concepts

Részletesebben

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Egységes és objektumközpontú adatbázis-kezelés (2. rész) Egységes és objektumközpontú adatbázis-kezelés (2. rész) A folytatásában a bemutatjuk, hogyan kezelhetünk Qt rendszer alatt SQL sormutatót, és készíthetünk grafikus felületet programoknak a Qt Designer

Részletesebben

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák. AWT Grafika Bevezető Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák. Fogalmak: geometriai alakzatok, felületek,

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Multimédiás adatbázisok

Multimédiás adatbázisok Multimédiás adatbázisok Multimédiás adatbázis kezelő Olyan adatbázis kezelő, mely támogatja multimédiás adatok (dokumentum, kép, hang, videó) tárolását, módosítását és visszakeresését Minimális elvárás

Részletesebben

Robotika. Kinematika. Magyar Attila

Robotika. Kinematika. Magyar Attila Robotika Kinematika Magyar Attila amagyar@almos.vein.hu Miről lesz szó? Bevezetés Merev test pozíciója és orientációja Rotáció Euler szögek Homogén transzformációk Direkt kinematika Nyílt kinematikai lánc

Részletesebben

4. Öröklődés. Programozás II

4. Öröklődés. Programozás II 4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()

Részletesebben

Képszerkesztés. Letölthető mintafeladatok gyakorláshoz: Minta teszt 1 Minta teszt 2. A modul célja

Képszerkesztés. Letölthető mintafeladatok gyakorláshoz: Minta teszt 1 Minta teszt 2. A modul célja Képszerkesztés Letölthető mintafeladatok gyakorláshoz: Minta teszt 1 Minta teszt 2 A modul célja Az ECDL Képszerkesztés alapfokú követelményrendszerben (Syllabus 1.0) a vizsgázónak értenie kell a digitális

Részletesebben

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 INFORMATIKA ÁGAZATI ALKALMAZÁSAI Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 7. Digitális térképezés, georeferálás, vektorizálás Digitális térkép Fogalma Jellemzői Georeferálás

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 8. előadás Visszatekintés A Windows Console alkalmazások egy karakteres képernyőt biztosítottak, ahol a kimenet a kiírt szöveg, míg a bemenet a billentyűzet volt.

Részletesebben

Képfeldolgozás. 1. el adás. A képfeldolgozás m veletei. Mechatronikai mérnök szak BME, 2008

Képfeldolgozás. 1. el adás. A képfeldolgozás m veletei. Mechatronikai mérnök szak BME, 2008 Képfeldolgozás 1. el adás. A képfeldolgozás m veletei Mechatronikai mérnök szak BME, 2008 1 / 61 Alapfogalmak transzformációk Deníció Deníció Geometriai korrekciókra akkor van szükség, ha a képr l valódi

Részletesebben

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I. Tartalomjegyzék Alkalmazás készítés Qt osztályokkal...2 A qmake eszköz...2 Hello Qt (hello)...2 Objektumok közötti kommunikáció (quit)...3 Fordítás/futtatás...4 Grafikus felület létrehozása, vezérlők szinkronizálása

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Mátrixok 2017 Mátrixok

Mátrixok 2017 Mátrixok 2017 számtáblázatok" : számok rendezett halmaza, melyben a számok helye két paraméterrel van meghatározva. Például lineáris egyenletrendszer együtthatómátrixa 2 x 1 + 4 x 2 = 8 1 x 1 + 3 x 2 = 1 ( 2 4

Részletesebben

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val A feladat A feladat egy kis számológép elkészítése. A számológép a következőképpen néz majd

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Programozás C++ -ban

Programozás C++ -ban 8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási

Részletesebben

Programozás I. 5. Előadás: Függvények

Programozás I. 5. Előadás: Függvények Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba

Részletesebben

Word VI. Lábjegyzet. Ebben a részben megadhatjuk, hogy hol szerepeljen a lábjegyzet (oldal alján, szöveg alatt).

Word VI. Lábjegyzet. Ebben a részben megadhatjuk, hogy hol szerepeljen a lábjegyzet (oldal alján, szöveg alatt). Word VI. Lábjegyzet A számozást minden oldalon vagy minden szakaszban újrakezdhetjük. Mutassunk a Beszúrás menü Hivatkozás pontjára, majd kattintsunk a Lábjegyzet parancsra. Ebben a részben megadhatjuk,

Részletesebben

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezel ő alkalmazás készítése Kdevelop környezetben I. MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó [root@localhost nacsa]# /usr/bin/safe_mysqld

Részletesebben

Elemi alkalmazások fejlesztése IV.

Elemi alkalmazások fejlesztése IV. Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezelő alkalmazás készítése Kdevelop környezetben I. Készítette: Szabóné Nacsa Rozália 1 MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó

Részletesebben

Feladat. Tervezés és implementálás

Feladat. Tervezés és implementálás Tartalomjegyzék FELADAT...2 Elvárások...2 TERVEZÉS ÉS IMPLEMENTÁLÁS...2 Megjelenési terv...2 Grafikus felület készítése...3 Modulszerkezet...3 Osztály diagram...3 MillMain form...4 Vezérlő k elrendezése...4

Részletesebben

Mintavételes szabályozás mikrovezérlő segítségével

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi;

#include <iostream> using namespace std; // struct macska is lehetne class macska { public: int kor; int suly; }; void main() { macska cirmi; 1. Készítsünk egy macska osztályt amely két információt tárol: a kor (int) és a súly (int). Mind a két tulajdonság legyen publikus. Próbáljuk ki az osztályt. Definiáljunk egy cirmi nevű macskát és adjuk

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2015. 03. 18. 6. El adás Graka Java-ban Emlékezzünk kicsit vissza a tikz-re: \begin{tikzpicture \draw (0,0) node[draw,circle] (S) {s; \draw (3,2) node[draw,circle] (A) {a; \draw

Részletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int

Részletesebben

Számítógépes grafika

Számítógépes grafika Számítógépes grafika HEFOP 3.5.1 Korszerű felnőttképzési módszerek kifejlesztése és alkalmazása EMIR azonosító: HEFOP-3.5.1-K-2004-10-0001/2.0 Tananyagfejlesztő: Máté István Lektorálta: Brückler Tamás

Részletesebben

Alapvető beállítások elvégzése Normál nézet

Alapvető beállítások elvégzése Normál nézet Alapvető beállítások elvégzése Normál nézet A Normál nézet egy egyszerűsített oldalképet mutat. Ez a nézet a legalkalmasabb a szöveg beírására, szerkesztésére és az egyszerűbb formázásokra. Ebben a nézetben

Részletesebben

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Nézetek kezelése Sok esetben

Részletesebben

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor 12. előadás Egyenletrendszerek, mátrixok Dr. Szörényi Miklós, Dr. Kallós Gábor 2015 2016 1 Tartalom Matematikai alapok Vektorok és mátrixok megadása Tömbkonstansok Lineáris műveletek Mátrixok szorzása

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010. június 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

Szövegek C++ -ban, a string osztály

Szövegek C++ -ban, a string osztály Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string

Részletesebben

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/eaf4/ Qt 4 2007

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Objektumelvű programozás

Objektumelvű programozás Objektum, osztály Objektumelvű programozás Az elemzés együttműködő objektumok rendszereként fogalmazza meg a feladatot. Objektum-központú elemzés A tervezés a feladat tárgyköreit egy-egy objektum felelősségévé

Részletesebben

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának

Részletesebben

BME MOGI Gépészeti informatika 7.

BME MOGI Gépészeti informatika 7. BME MOGI Gépészeti informatika 7. 1. feladat Írjon Windows Forms alkalmazást egy kör és egy pont kölcsönös helyzetének vizsgálatára! A feladat megoldásához hozza létre a következő osztályokat! Pont osztály:

Részletesebben

6.1.1.2 Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján.

6.1.1.2 Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján. 6. modul Prezentáció A modul a prezentációkészítéshez szükséges ismereteket kéri számon. A sikeres vizsga követelményei: Tudni kell prezentációkat létrehozni és elmenteni különböző fájl formátumokban A

Részletesebben

openbve objektumkészítés Leírás az objektumkészítéshez használható parancsokról

openbve objektumkészítés Leírás az objektumkészítéshez használható parancsokról Leírás az openbve-vel kompatibilis objektumkészítéshez használható parancsokról 1. oldal openbve objektumkészítés Leírás az objektumkészítéshez használható parancsokról A leírás az openbve-hez készíthető

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

1. Mátrixösszeadás és skalárral szorzás

1. Mátrixösszeadás és skalárral szorzás 1 Mátrixösszeadás és skalárral szorzás Mátrixok tömör jelölése T test Az M = a i j T n m azt az n sorból és m oszlopból álló mátrixot jelöli, amelyben az i-edik sor j-edik eleme a i j T Példák [ ] Ha M

Részletesebben

Form1 Form Size 400;400 Text Mozgó kör timer1 Timer Enabled True Interval 100

Form1 Form Size 400;400 Text Mozgó kör timer1 Timer Enabled True Interval 100 BME MOGI Gépészeti informatika 16. 1. feladat Írjon alkalmazást, melyben egy 4 pixel sugarú, pirosra kifestett kört egy másik körön mozgat! A mozgást időzítő vezérelje! Megoldási mód: Windows Forms alkalmazás

Részletesebben

Keresztmetszet másodrendű nyomatékainak meghatározása

Keresztmetszet másodrendű nyomatékainak meghatározása BUDAPEST MŰSZAK ÉS GAZDASÁGTUDOMÁNY EGYETEM Keresztmetszet másodrendű nyomatékainak meghatározása Segédlet a Szilárdságtan c tárgy házi feladatához Készítette: Lehotzky Dávid Budapest, 205 február 28 ábra

Részletesebben

Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András

Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán 2.18.3. verzióra aktualizálta: Jáky András (jakyandras@gmail.com) Ez a leírás ahhoz nyújt segítséget, hogy szkennelt térképet vagy ortofotót

Részletesebben