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ć...