Home
Add Document
Sign In
Register
ebben a pontban volt az utolsó rajzolásnál az egérmutató
Home
ebben a pontban volt az utolsó rajzolásnál az egérmutató
...
Author:
Guest
20 downloads
237 Views
114KB Size
Report
DOWNLOAD PDF
Recommend Documents
az A pontban elhelyezett rajztű,
EU-ÓRA AZ EURÓPA PONTBAN
Kedves Olvasók, ebben az
Ebben az esztendőben történt
AZ ÉV TELJESÍTMÉNYTÚRÁZÓJA kiírás (A kiírás ebben a formájában között volt érvényben.)
Ebben az írásban1 az oktatás struktúrájának és az iskolázottságnak
Ebben az írásban1 a felvételi adatbázis2 valamint az oktatási statisztikák
Az igazolvány kitöltését a résztvevő kezdeményezheti ebben az adatbázisban:
ebben az esetben CO 2
NAGYKORÚAK LETTÜNK. Ebben az esztendôben a Balatonfenyves
- Hosszú ideig úgy élt a magyar hivatalos köztudatban, mint az ellenzék gyülekezőhelye. Mennyi volt ebben az igazság?
Kezdetben volt az Ige, és az Ige Istennél volt, és az Ige Isten volt
AZ MSZP EP DELEGÁCIÓ VÁLLALÁSAI 15 PONTBAN
BÉKESSÉG A SZÉKESFEHÉRVÁRI REFORMÁTUS EGYHÁZKÖZSÉG LAPJA. Kezdetben volt az Ige, és az Ige Istennél volt, és az Ige Isten volt
Az ebben megfogalmazott legfontosabb követelések:
ember helye ebben az Univerzumban
Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:
Kezdetben volt az információ
Az Eucharisztia. A Sacrosanctum concilium a 47. pontban azt tanítja, hogy az eucharisztia
A klinikai és farmakodinámiás tudnivalók összefoglalását lásd az 5.1 pontban
Sikeres volt az összevonás
Legális volt az elnökválasztás
A célom az volt, hogy megszólítsam az egész politikai elitet
A korai nevelés a legfontosabb, az, amit az ember ebben az életkorban felfog, kihat az egész életére (Brunszvik Teréz)
canvas.h #pragma once #include #include #include #include #include #include #include
// terület kiválasztáshoz
struct RajzParameterek { int penWidth = 1; Qt::PenStyle penStyle = Qt::SolidLine; Qt::PenCapStyle penCap = Qt::FlatCap; Qt::PenJoinStyle penJoin = Qt::MiterJoin; Qt::BrushStyle brushStyle = Qt::SolidPattern; QColor penColor = qRgb(0, 0, 0), brushColor = qRgb(255, 266, 255); }; class Canvas : public QWidget { Q_OBJECT
bool _modified = false; // bool _drawing = false; // bool _freehand = false; // QPoint _lastPoint; // ebben a pontban volt QImage _canvas; RajzParameterek _param;
ki kell rajzolni? szabadkézi rajzolás közben vagyunk? nem az utolsó rajzolásnál az egérmutató
// ide rajzolunk
public: Canvas(QWidget *parent = 0); virtual ~Canvas() {}; void SetParameters(RajzParameterek ¶m) { _param = param; } // Bármilyen képre jó, ha ez a _canvas, akkor a szülő méretére kell állítani! // Csak nagyobb newSize esetén változtatja meg a méretet void Resize(QImage *image, QSize newSize); void StartFreeHandDrawing() { _freehand = true; } void StopFreeHandDrawing() { _freehand = false; } // double buffer // lekérdezés bool IsModified() const { return _modified; } bool IsDrawing() const { return _drawing; } const QPoint &LastPos() const { return _lastPoint; } QColor GetPixel(const QPoint &pt) const { return _canvas.pixel(pt); } QColor PenColor() const { return _param.penColor; } int PenWidth() const { return _param.penWidth; } Qt::PenStyle PenStyle() const { return _param.penStyle; }
Qt::PenCapStyle PenCapStyle() const { return _param.penCap; } Qt::PenJoinStyle PenJoinStyle()const { return _param.penJoin; } Qt::BrushStyle BrushStyle() const { return _param.brushStyle; } // Beállítás void SetPenWidth(int width) { _param.penWidth = width; } void SetPenColor(QColor color) { _param.penColor = color; } void SetPenStyle (Qt::PenStyle &v) { _param.penStyle= v; } void SetPenCapStyle(Qt::PenCapStyle &v) { _param.penCap= v; } void SetPenJoinStyle(Qt::PenJoinStyle &v) { _param.penJoin= v; } void SetBrushStyle(Qt::BrushStyle &v) { _param.brushStyle= v; } // rajzolás void SetPixel(const QPoint &pt, QColor color); // egy pont kirajzolása void MoveTo(int x, int y) { _lastPoint = QPoint(x, y); } void void void void void void false); void // void void protected:
DrawLine(const QPoint start, const QPoint end); LineTo(const QPoint &endPoint); DrawEllipse(const QRect &rect, bool fill = false); DrawRect(const QRect & rect, bool fill = false); DrawPolygon(const QVector
points, bool fill = false); DrawPolygon(const QPoint & pt, double sideLength, int sideCount, bool fill = DrawTriangle(const QPoint & pt, double side, bool fill = false); DrawArc(double start, double end); Clear();
// esemányek. Q_DECL_OVERRIDE == C++ override identifier () // elhagyható lenne, de jó ha van (ellenőrzi, hogy valóban virtuális fv-t írtunk felül) #if QT_VERSION < 0x050000 // akkor nincs Q_DECL_OVERRIDE definiálva #define Q_DECL_OVERRIDE #endif void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; };
canvas.cpp #include "canvas.h" #include
Canvas::Canvas(QWidget *parent) : QWidget(parent) { } void Canvas::Resize(QImage *image, QSize newSize) { if (newSize.width() < image->width()) newSize.setWidth(image->width()); if (newSize.height() < image->height()) newSize.setHeight(image->height()); if (newSize.width() == image->width() && newSize.height() == image->height()) return; QImage newImage(newSize, QImage::Format_RGB32); newImage.fill(qRgb(255, 255, 255)); QPainter painter(&newImage); painter.drawImage(QPoint(0, 0), *image); *image = newImage; } void Canvas::resizeEvent(QResizeEvent *event) { int newWidth = qMax(width() + 128, _canvas.width()); int newHeight = qMax(height() + 128, _canvas.height()); Resize(&_canvas, QSize(newWidth, newHeight)); QWidget::resizeEvent(event); } // a kirajzolás itt történik: _canvas-t rajzoljuk ki a képernyőre void Canvas::paintEvent(QPaintEvent *event) { QPainter painter(this); QRect dirtyRect = event->rect(); painter.drawImage(dirtyRect, _canvas, dirtyRect); } void Canvas::Clear() { _canvas.fill(qRgb(255, 255, 255)); _lastPoint = QPoint(0, 0); _modified = true; update(); } void Canvas::SetPixel(const QPoint &pt, QColor color) { _canvas.setPixel(pt, color.rgb()); _lastPoint = pt; update(); }
// single point
void Canvas::DrawLine(const QPoint start, const QPoint end)
{ _lastPoint = start; LineTo(end); } void Canvas::LineTo(const QPoint &endPoint) { QPainter painter(&_canvas); painter.setPen(QPen(_param.penColor, _param.penWidth, _param.penStyle, _param.penCap, _param.penJoin)); painter.drawLine(_lastPoint, endPoint); _modified = true; int rad = (_param.penWidth / 2) + 2; update(QRect(_lastPoint, endPoint).normalized().adjusted(-rad, -rad, +rad, +rad)); _lastPoint = endPoint; } void Canvas::DrawEllipse(const QRect &rect, bool fill) { QPainter painter(&_canvas); painter.setPen(QPen(_param.penColor, _param.penWidth, _param.penStyle, _param.penCap, _param.penJoin)); if (fill) { painter.setBrush(QBrush(_param.brushColor, _param.brushStyle)); } painter.drawEllipse(rect); _modified = true; int rad = (_param.penWidth / 2) + 2; update(rect.normalized().adjusted(-rad, -rad, +rad, +rad)); } void Canvas::DrawRect(const QRect & rect, bool fill) { QPainter painter(&_canvas); painter.setPen(QPen(_param.penColor, _param.penWidth, _param.penStyle, _param.penCap, _param.penJoin)); if (fill) { painter.fillRect(rect, QBrush(_param.brushColor, _param.brushStyle)); } else painter.drawRect(rect); _modified = true; int rad = (_param.penWidth / 2) + 2; update(rect.normalized().adjusted(-rad, -rad, +rad, +rad)); } void Canvas::DrawPolygon(const QVector
points, bool fill) { if (points.size() < 3 || points.size() > 100) // értelmes korlát a lehetséges pontokra
return; QPainter painter(&_canvas); painter.setPen(QPen(_param.penColor, _param.penWidth, _param.penStyle, _param.penCap, _param.penJoin)); if (fill) { painter.setBrush(QBrush(_param.brushColor, _param.brushStyle)); } painter.drawPolygon( points.data(), points.size() ); _modified = true; double minx = 10000, maxx = -10000, miny = 10000, maxy = -10000; for (int i = 0; i < points.size(); ++i) { if (minx > points[i].x()) minx = points[i].x(); if (maxx < points[i].x()) maxx = points[i].x(); if (miny > points[i].y()) miny = points[i].y(); if (maxy < points[i].y()) maxy = points[i].y(); } QRect rect = QRect(minx, miny, maxx, maxy); int rad = (_param.penWidth / 2) + 2; update(rect.normalized().adjusted(-rad, -rad, +rad, +rad)); } void Canvas::DrawPolygon(const QPoint & pt, double sideLength, int sideCount, bool fill) { if (sideCount < 3 || sideCount > 100) // értelmes korlát a lehetséges oldalszámra return; QVector
points(sideCount); double angle = 2 * 3.1415926535897931159979634685442 / sideCount, // középponti szög r = sideLength / sin(angle/2) / 2; // beírható kör sugara _lastPoint = pt; const_cast
(pt) += QPoint(0, r); // középpont double x, y; for (int i = 0; i < sideCount; ++i) { x = pt.x() - r * sin(i*angle); y = pt.y() - r * cos(i*angle); points[i] = QPointF(x, y); } DrawPolygon(points, fill); } void Canvas::DrawTriangle(const QPoint & pt, double side, bool fill) { QVector
points; points.push_back(pt); double d = side * 1.7320508075688771931766041234368 / 2.0; QPoint qp; qp.setX(pt.x() + side / 2.0); qp.setY(pt.y() + d); points.push_back(qp); qp.setX(pt.x() - side / 2.0); points.push_back(qp);
DrawPolygon(points, fill); }
void Canvas::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { _lastPoint = event->pos(); if(_freehand) _drawing = true; } } void Canvas::mouseMoveEvent(QMouseEvent *event) { if (_drawing) LineTo(event->pos()); }
void Canvas::mouseReleaseEvent(QMouseEvent *event) { if (_drawing & event->button() == Qt::LeftButton) { LineTo(event->pos()); _lastPoint = event->pos(); _drawing = false; } }
×
Report "ebben a pontban volt az utolsó rajzolásnál az egérmutató"
Your name
Email
Reason
-Select Reason-
Pornographic
Defamatory
Illegal/Unlawful
Spam
Other Terms Of Service Violation
File a copyright complaint
Description
×
Sign In
Email
Password
Remember me
Forgot password?
Sign In
Our partners will collect data and use cookies for ad personalization and measurement.
Learn how we and our ad partner Google, collect and use data
.
Agree & close