Bloc de segment modifié passé taille demandée
Mise à jour : L'erreur semble être générées par cette ligne: *ligne = couleur;
J'obtiens l'erreur suivante mais je ne comprends pas d'où ça peut venir de:
L'erreur:
SEGMENT[testQt.exe]:
Bloc de segment à 0B444FE8 modifiées à 0B44C6B0 passé demandé la taille de 76c0
La ligne qui le génère:
return QPixmap::fromImage(qimage);
À partir de:
QPixmap Interpolation::getData() {
QPointF pt(0, 0);
QRgb color;
QImage qimage(m_width, m_height, QImage::Format_ARGB32);
qimage.fill(Qt::transparent);
for (int i(0); i < m_height; ++i) {
m_progress->setValue(m_width+i);
QRgb *line = (QRgb *)qimage.scanLine(i);
for (int j(0); j < m_width; ++j) {
pt.setX(j);
pt.setY(i);
line += 1;
if (isInHull(pt)) {
color = colorScale(interp(&pt));
*line = color; //If I remove this part the program won't crash
}
}
}
return QPixmap::fromImage(qimage);
}
Si cela aide:
QRgb Interpolation::colorScale(qreal value)
{
int cat;
cat = qFloor(qreal(9)*(value-m_min)/(m_max-m_min));
return m_couleurs[cat];
}
avec:
m_couleurs[0] = qRgb(247, 252, 240);
m_couleurs[1] = qRgb(224, 243, 219);
m_couleurs[2] = qRgb(204, 235, 197);
m_couleurs[3] = qRgb(168, 221, 181);
m_couleurs[4] = qRgb(123, 204, 196);
m_couleurs[5] = qRgb(78, 179, 211);
m_couleurs[6] = qRgb(43, 140, 190);
m_couleurs[7] = qRgb(8, 104, 172);
m_couleurs[8] = qRgb(8, 64, 129);
Tout le plomb serait appréciée.
Edit: ajout de la fonction complète dans les cas où il permet de.
Edit2: fait le code plus clair et enlevé la partie inutiles.
Edit3: mise à jour de la question.
- Rien ne saute, mais il ya certaines choses que vous pouvez faire pour le réduire. L'erreur se produire si vous commentez l'ensemble de la deuxième boucle? (en commençant par
for (int i(0); i < m_height; ++i)
et se terminant avec la mise en correspondance}
? Si l'erreur disparaît, alors que c'est probablement là que le problème est. - le problème ne semble pas s'en aller si je supprime cette partie. Je vais mettre à jour mon premier post.
- Est-ce cast juridique? QRgb *ligne = (QRgb *)qimage.scanLine(i); qt-project.org/doc/qt-4.8/qimage.html#scanLine scanLine retour d'un unsigned char, et vous êtes le jetant dans un unsigned integer doc.qt.nokia.com/4.7-snapshot/qcolor.html#QRgb-typedef
Vous devez vous connecter pour publier un commentaire.
Vous avance la ligne avant de vous attribuer une couleur à l' *de ligne. Alors, quand j = 0, vous êtes l'établissement de pixel 1, à la fin de la dernière pixel sur la dernière ligne de balayage de vous écrire après la fin de la mémoire tampon.
Déplacer la ligne += 1 à la fin de la boucle.