From 571094bc016a99c976494953214cfcaccdd7058e Mon Sep 17 00:00:00 2001 From: Dawid Pietrykowski Date: Wed, 23 Nov 2022 23:52:07 +0100 Subject: [PATCH] Added line color change --- .gitignore | 2 ++ QT/linia/mywindow.cpp | 26 ++++++++++++++++++++++---- QT/linia/mywindow.h | 3 +++ QT/linia/mywindow.ui | 25 +++++++++++++++++++------ 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e0df312..205f3d2 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,5 @@ compile_commands.json *creator.user* *_qmlcache.qrc + +*.zip diff --git a/QT/linia/mywindow.cpp b/QT/linia/mywindow.cpp index 8b291e4..ffbbb33 100644 --- a/QT/linia/mywindow.cpp +++ b/QT/linia/mywindow.cpp @@ -7,6 +7,7 @@ #include "ui_mywindow.h" #include #include + #include #include #include // for float,double macros // Definicja konstruktora, wywolujemy najpierw @@ -58,6 +59,15 @@ void MyWindow::on_exitButton_clicked() } +void MyWindow::on_colorButton_clicked() +{ + // qApp to globalny wskaznik do obiektu reprezentujacego aplikacje + // quit() to funkcja (slot) powodujaca zakonczenie aplikacji z kodem 0 (brak bledu) + color = QColorDialog::getColor(); +} + + + // Funkcja "odmalowujaca" komponent void MyWindow::paintEvent(QPaintEvent*) { @@ -114,6 +124,10 @@ void MyWindow::czysc() // Funkcja (slot) wywolywana po nacisnieciu przycisku myszy (w glownym oknie) void MyWindow::mousePressEvent(QMouseEvent *event) { + if(event->button() != Qt::LeftButton) + return; + + UpdateTempImage(); // Pobieramy wspolrzedne punktu klikniecia @@ -138,6 +152,7 @@ void MyWindow::mousePressEvent(QMouseEvent *event) void MyWindow::mouseMoveEvent(QMouseEvent *event) { + // Pobieramy wspolrzedne punktu klikniecia int x = event->x(); int y = event->y(); @@ -167,6 +182,9 @@ void MyWindow::mouseMoveEvent(QMouseEvent *event) } void MyWindow::mouseReleaseEvent(QMouseEvent *event){ + if(event->button() != Qt::LeftButton) + return; + if(draw_finished) return; @@ -208,7 +226,7 @@ void MyWindow::DrawLine(int x1, int y1, int x2, int y2){ int x_form = x - x1; int y = a * x_form + y1; - SetColor(ptr, QColor(255, 255, 255), x, y); + SetColor(ptr, color, x, y); } } else{ @@ -222,15 +240,15 @@ void MyWindow::DrawLine(int x1, int y1, int x2, int y2){ int y_form = y - y1; int x = ((float)(y_form) / a) + x1; - SetColor(ptr, QColor(255, 255, 255), x, y); + SetColor(ptr, color, x, y); } } } void MyWindow::SetColor(unsigned char *ptr, QColor color, int x, int y){ - ptr[szer*4*y + 4*x] = color.red(); + ptr[szer*4*y + 4*x] = color.blue(); ptr[szer*4*y + 4*x + 1] = color.green(); - ptr[szer*4*y + 4*x + 2] = color.blue(); + ptr[szer*4*y + 4*x + 2] = color.red(); ptr[szer*4*y + 4*x + 3] = 255; } diff --git a/QT/linia/mywindow.h b/QT/linia/mywindow.h index 54adcc4..f54be7f 100644 --- a/QT/linia/mywindow.h +++ b/QT/linia/mywindow.h @@ -66,6 +66,8 @@ private: QImage *active_img; + QColor color = QColor(255, 255, 255); + // Pola przechowujace szerokosc i wysokosc rysunku // oraz wspolrzedne jego lewego gornego naroznika int szer; @@ -92,6 +94,7 @@ private: private slots: void on_cleanButton_clicked(); void on_exitButton_clicked(); + void on_colorButton_clicked(); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); diff --git a/QT/linia/mywindow.ui b/QT/linia/mywindow.ui index f8e934b..9bddceb 100644 --- a/QT/linia/mywindow.ui +++ b/QT/linia/mywindow.ui @@ -51,9 +51,9 @@ - 80 - 40 - 75 + 60 + 50 + 125 23 @@ -64,9 +64,9 @@ - 80 - 70 - 75 + 60 + 80 + 125 23 @@ -74,6 +74,19 @@ Wyjście + + + + 60 + 110 + 125 + 23 + + + + Wybierz kolor + +