Witam.

Mam duży problem z narysowaniem na dużym obrazku bardzo długich linii.
[code]
obrazek=QImage(100000,270,QImage::Format_RGB32);
obrazek.fill(qRgb(150,150,250));

QPainter painter (&obrazek);
painter.setPen(QColor(50,255,50));
painter.drawLine(QPoint (0,10),QPoint (99999,10));

[/code]

Wszystko działa ok dopóki współrzędna x nie przekroczy ~ 35 tys. Po przekroczeniu wspomnianego progu wykres czy też linia się urywają.

[code]
painter.drawLine(0,10,99999,10) [/code]

Efekt taki sam jak wyżej.

Sprawdziłem jeszcze:

[code]
QPainterPath painter2 (QPoint(0,30));
painter2.lineTo(QPoint(99999,30));
painter.drawPath(painter2);
[/code]

Ale uzyskałem dokładnie taki sam efekt jak wyżej.

[code]
int wsk1=(int) obrazek.scanLine(50);

for (int i=0; i<obrazek.width(); i++){
wsk1[i]=qRgb(255,0,0);
}
[/code]

http://img207.imageshack.us/img207/6048/80039218.jpg

Zadziała, jednak ja chciałbym wykorzystać funkcje drawLine lub line_To, lub podobne. Rysuję wykres i bardzo chciałbym takiego rodzaju funkcje wykorzystać do łączenia punktów. Jednakże dla argumentów x większych od około 35 tys. oś odciętych wykresu jak i sam wykres się urywają... :(

http://img85.imageshack.us/img85/2158/wk2o.jpg

Informacje o obrazku, wektorach x i y:
http://img534.imageshack.us/img534/5051/wk3g.jpg

Skalowanie, translacja i rysowanie:
[code]
painter.scale(width/(width - 0), -height/((height/2-1) - (-height/2))); //width, height - szerokość, wysokość obrazka
painter.translate(margines,(-(height-margines)/2+1));

painter.drawLine(QPoint(0,0),QPoint(width-margines-1,0));
painter.drawLine(QPoint(0,0),QPoint(0,(height-margines)/2-1));
painter.drawLine(QPoint(0,0),QPoint(0,-(height-margines)/2));

for (int i=0; i+1<x.size(); i++){

    painter.drawLine(QPoint(x[i],y[i]),QPoint(x[i+1],y[i+1]));

}[/code]

void QPainter::drawLine ( const QPoint & p1, const QPoint & p2 )
Draws a line from p1 to p2.
QPoint ( int x, int y )

void QPainter::drawLine ( int x1, int y1, int x2, int y2 )
This is an overloaded function.
Draws a line from (x1, y1) to (x2, y2) and sets the current pen position to (x2, y2).

Niby wszystko powinno ładnie działać...