void QModeGraphics
::drawGrid(QPainter *painter
) {
QRect rect
(modesDisplay
-> rect
());
if(!rect.isValid()) return;
/// Отрисовка осей вдоль оси X
for(int i=0; i<=settings.numXTicks; ++i)
{
int x = rect.left() + (i * (rect.width() - 1) / settings.numXTicks);
double label = (settings.minX >= 0) ?
settings.minX + (i * settings.spanX() / settings.numXTicks)
: settings.maxX - (i * settings.spanX() / settings.numXTicks);
QString s_label
= GraphicDisplay
::round(label
);
painter -> setPen(Qt::black);
painter -> drawLine(x, rect.top(), x, rect.bottom());
if(i != settings.numXTicks)
{
int flags = Qt::AlignHCenter | Qt::AlignTop;
boundString = painter -> boundingRect(boundString, flags, s_label);
painter -> drawText(x - (boundString.width() + 5), rect.bottom() - (boundString.height() + 5),
boundString.width(), boundString.height(), flags, s_label);
}
}
if(mode != NULL)
{
int flags = Qt::AlignCenter;
boundString = painter -> boundingRect(boundString, flags, mode -> x_param.param_name);
painter -> drawText(rect.right() - boundString.width(), rect.bottom() - 2 * boundString.height(),
mode -> x_param.param_name);
}
/// Отрисовка осей вдоль оси Y
for(int j=0; j<=settings.numYTicks; ++j)
{
int y = rect.bottom() - (j * (rect.height() - 1) / settings.numYTicks);
double label = settings.minY + (j * settings.spanY() / settings.numYTicks);
QString s_label
= GraphicDisplay
::round(label
);
painter -> setPen(Qt::black);
painter -> drawLine(rect.left(), y, rect.right(), y);
if(j != settings.numYTicks)
{
int flags = Qt::AlignRight | Qt::AlignTop;
boundString = painter -> boundingRect(boundString, flags, s_label);
painter -> drawText(rect.left() + 7, y - boundString.height(),
boundString.width(), boundString.height(), flags, s_label);
}
}
if(mode != NULL)
{
int flags = Qt::AlignCenter;
boundString = painter -> boundingRect(boundString, flags, mode -> y_param.param_name);
painter -> drawText(rect.left() + 7, rect.top() + boundString.height(),
mode -> y_param.param_name);
}
painter -> drawRect(rect.adjusted(0, 0, -1, -1));
}
void QModeGraphics::drawGrid(QPainter *painter)
{
QRect rect(modesDisplay -> rect());
if(!rect.isValid()) return;
QRect boundString;
/// Отрисовка осей вдоль оси X
for(int i=0; i<=settings.numXTicks; ++i)
{
int x = rect.left() + (i * (rect.width() - 1) / settings.numXTicks);
double label = (settings.minX >= 0) ?
settings.minX + (i * settings.spanX() / settings.numXTicks)
: settings.maxX - (i * settings.spanX() / settings.numXTicks);
QString s_label = GraphicDisplay::round(label);
painter -> setPen(Qt::black);
painter -> drawLine(x, rect.top(), x, rect.bottom());
if(i != settings.numXTicks)
{
int flags = Qt::AlignHCenter | Qt::AlignTop;
boundString = painter -> boundingRect(boundString, flags, s_label);
painter -> drawText(x - (boundString.width() + 5), rect.bottom() - (boundString.height() + 5),
boundString.width(), boundString.height(), flags, s_label);
}
}
if(mode != NULL)
{
int flags = Qt::AlignCenter;
boundString = painter -> boundingRect(boundString, flags, mode -> x_param.param_name);
painter -> drawText(rect.right() - boundString.width(), rect.bottom() - 2 * boundString.height(),
mode -> x_param.param_name);
}
/// Отрисовка осей вдоль оси Y
for(int j=0; j<=settings.numYTicks; ++j)
{
int y = rect.bottom() - (j * (rect.height() - 1) / settings.numYTicks);
double label = settings.minY + (j * settings.spanY() / settings.numYTicks);
QString s_label = GraphicDisplay::round(label);
painter -> setPen(Qt::black);
painter -> drawLine(rect.left(), y, rect.right(), y);
if(j != settings.numYTicks)
{
int flags = Qt::AlignRight | Qt::AlignTop;
boundString = painter -> boundingRect(boundString, flags, s_label);
painter -> drawText(rect.left() + 7, y - boundString.height(),
boundString.width(), boundString.height(), flags, s_label);
}
}
if(mode != NULL)
{
int flags = Qt::AlignCenter;
boundString = painter -> boundingRect(boundString, flags, mode -> y_param.param_name);
painter -> drawText(rect.left() + 7, rect.top() + boundString.height(),
mode -> y_param.param_name);
}
painter -> drawRect(rect.adjusted(0, 0, -1, -1));
}
To copy to clipboard, switch view to plain text mode
Bookmarks