1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C++ - Hilfe!!

  • soul
  • 31. Januar 2010 um 17:31
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • soul
    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
    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

  • soul
    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
    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.

  • soul
    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
    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.

  1. Datenschutzerklärung
  2. Impressum