1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C++ - Hilfe!!

  • soul
  • 31. Januar 2010 um 17:31
  • Unerledigt
  • soul
    3
    soul
    Mitglied
    Punkte
    55
    Beiträge
    9
    • 31. Januar 2010 um 17:31
    • #1

    Hallo zusammen,

    kann mir jemand bei meinem Programm weiterhelfen?
    Ich muss ein Signal zeichnen und hatte die x,y -Punkte frei gewaehlt gehabt. Jetzt soll ich das aber nicht so machen, da das Signal nicht richtig rauskommt. Ich komm da aber nicht weiter. Hier ist der bisherige Code:

    Code
    void drawwidget::paintEvent(QPaintEvent * event){
        QPainter painter(this);
        QPainterPath painterpath_signal;
    
    
        position_xRichtung = 10;
        position_yRichtung = 300;
    
    
        if(signalwerte.size() != 0){
            painter.drawText(300,30,QString::number(segment) + ". Segment");
            painter.setFont(QFont("Arial", 10, QFont::Bold));
            painterpath_signal.moveTo(position_xRichtung, position_yRichtung); //keinen selber gesetzten punkt waehlen, sondern startpunkt ermitteln
            for(int i = start; i < end; i++){
                painterpath_signal.lineTo(position_xRichtung + 1,
                        signalwerte.at(i) * (ymax-ymin) + position_yRichtung);
                        position_xRichtung = position_xRichtung + 1;
            }
            drawCoordinates(painter);
            painter.setPen(Qt::red);
        }
        painter.drawPath(painterpath_signal);
    }
    
    
    //hoechsten wert des signals ausrechnen. alle werte mit schleife //durchlaufen und den hoechsten ermitteln.
    //koordinatentransformation muss rein.
    void drawwidget::ymaxi() {
        for(int i = start; i <= signalwerte.size(); i++) {
            if (signalwerte.at(i) > signalwerte.at(i-1)) {
                ymax = i;
            }
        }
    }
    
    
    //niedrigsten wert des signals ausrechnen. alle werte mit schleife //durchlaufen und den niedrigsten ermitteln.
    //Koordinatentransformation muss rein.
    void drawwidget::ymini() {
        for(int j = start; j <= signalwerte.size(); j++) {
            if (signalwerte.at(j) < signalwerte.at(j-1)) {
                ymin = j;
            }
        }
    }
    
    
    void drawwidget::drawCoordinates(QPainter &painter) {
        painter.setPen(Qt::black);
        painter.drawLine(10, 300, signalwerte.size(), 300);
        painter.drawText(670, 350, tr("x"));
        painter.drawLine(10, 10, 10, 490);
        painter.drawText(15, 20, tr("y"));
    }
    Alles anzeigen

    Also ich muss jetzt statt position_xRichtung und position_yRichtung ermittelte Werte setzen. Und die 2 Methoden ymaxi() und ymini() richtig implementieren. Weiss auch nicht ob es bisher so stimmt und dann die Werte in die Methode paintEvent() einsetzen.

    Komm wirklich nicht weiter. Wäre für jede Hilfe dankbar

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 31. Januar 2010 um 18:22
    • #2

    Du musst beim ermitteln des Index mit dem maximalen Wert at(i) mit at(ymax) vergleichen. Sonst kriegst da ja nur Murks raus. Das gleiche gilt fürs Minimum

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • soul
    3
    soul
    Mitglied
    Punkte
    55
    Beiträge
    9
    • 31. Januar 2010 um 18:31
    • #3

    hab das jetzt so gemacht aber leider funktioniert das immer noch nicht. jetzt gehen lauter streifen von oben bis unten durch über die ganze fläche

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 31. Januar 2010 um 18:44
    • #4

    Naja, tu halt debuggen, step rein und lass dir die Koordinaten ausgeben. Ansonsten: Deine Signalwerte mit der Differenz von ymax und ymin multiplizieren... was bringt das? Normalerweise müsstest die dividieren, dann sinds normalisiert. Und dann multiplizierst die mit der Fensterhöhe.

    Aber wie gesagt: Das is so lückenhaft, wir können das auch nicht riechen.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • soul
    3
    soul
    Mitglied
    Punkte
    55
    Beiträge
    9
    • 31. Januar 2010 um 19:57
    • #5

    Wolfibolfi
    könnt ich dir evtl. meinen Code zuschicken? könntest du mir da weiter helfen? ist nur ne frage..musst nicht machen wenn du nicht willst..bin grad nur total verzweifelt und muss das heute noch fertig machen

  • soul
    3
    soul
    Mitglied
    Punkte
    55
    Beiträge
    9
    • 1. Februar 2010 um 00:09
    • #6

    hat sich erledigt..danke

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung