• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rysowanie odcinków -Qt Creator

Aruba Cloud - Virtual Private Server VPS
+1 głos
398 wizyt
pytanie zadane 9 stycznia 2021 w Inne języki przez LinosiK Obywatel (1,920 p.)

Cześć, muszę napisać funkcję, która będzie w Qt creator rysowała odcinek. Mianowicie gdy wcisnę LPM, trzymając go pojadę w inne miejsce i go puszczę to od punktu a ( wcisnięcia ) do punktu b ( puszczenia ) pokaże mi się odcinek.
Posiadam funkcję do rysowania pojedynczego pixela, ale niestety nie wiem jak ją zamienić na rysowanie odcinków.
Funkcja rysująca pixel:
 

void MainWindow::drawPixel(int x, int y, unsigned char red, unsigned char green, unsigned char blue)
{
    unsigned char *wsk;

    // sprawdzamy czy (x,y) leży w granicach rysunku
    if(x>=0 && y>=0 && x<width && y<height)
    {
        wsk = img->scanLine(y);
        wsk[4*x] = blue;
        wsk[4*x+1] = green;
        wsk[4*x+2] = red;
    }

}

Funkcja MousePress:

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    int x,y;

    // Pobieramy współrzędne punktu kliknięcia
    x = event->x();
    y = event->y();
    // Współrzędne obliczane są względem głównego okna programu
    // aby uzyskać współrzędne względem obszaru rysowania (ramki) musimy je przesunąć
    // tak aby punkt (0,0) pokrywał się z lewym górnym naroznikiem obszaru rysowania
    x = x - startX;
    y = y - startY;

    // Jeżeli wciśnięto lewy przycisk to zamolowujemy piksel na biało
    if(event->button() == Qt::LeftButton)
    {
        drawPixel(x,y);
    }
    // a w przeciwnym wypadku na czerwono
    else
    {
        drawPixel(x,y,255,0,0);
    }

    update();
}

 

1 odpowiedź

+1 głos
odpowiedź 9 stycznia 2021 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

użyj funkcji drawLine. Do określenia punków użyj eventów: QEvent::MouseButtonPress (naciśnięcie przycisku) - do punktu początkowego, i QEvent::MouseButtonRelease (puszczenie przycisku) - do punktu końcowego.

Pozdrawiam,

Nelson

Podobne pytania

0 głosów
2 odpowiedzi 2,096 wizyt
0 głosów
4 odpowiedzi 2,100 wizyt
0 głosów
1 odpowiedź 300 wizyt
pytanie zadane 26 stycznia 2021 w C i C++ przez Nie Wiem Nowicjusz (240 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...