QWT API (中文) 7.3.0
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_painter.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *
9 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_PAINTER_H
28#define QWT_PAINTER_H
29
30#include "qwt_global.h"
31
32#include <qpalette.h>
33#include <qpolygon.h>
34#include <qpen.h>
35
36class QwtScaleMap;
37class QwtColorMap;
38class QwtInterval;
39
40class QPainter;
41class QBrush;
42class QWidget;
43class QImage;
44class QPixmap;
45class QFontMetrics;
46class QFontMetricsF;
47class QTextDocument;
48class QPainterPath;
49
59class QWT_EXPORT QwtPainter
60{
61public:
62 static void setPolylineSplitting(bool);
63 static bool polylineSplitting();
64
65 static void setRoundingAlignment(bool);
66 static bool roundingAlignment();
67 static bool roundingAlignment(const QPainter*);
68
69 static void drawText(QPainter*, qreal x, qreal y, const QString&);
70 static void drawText(QPainter*, const QPointF&, const QString&);
71 static void drawText(QPainter*, qreal x, qreal y, qreal w, qreal h, int flags, const QString&);
72 static void drawText(QPainter*, const QRectF&, int flags, const QString&);
73
74#ifndef QT_NO_RICHTEXT
75 static void drawSimpleRichText(QPainter*, const QRectF&, int flags, const QTextDocument&);
76#endif
77
78 static void drawRect(QPainter*, qreal x, qreal y, qreal w, qreal h);
79 static void drawRect(QPainter*, const QRectF& rect);
80 static void fillRect(QPainter*, const QRectF&, const QBrush&);
81
82 static void drawEllipse(QPainter*, const QRectF&);
83 static void drawPie(QPainter*, const QRectF& r, int a, int alen);
84
85 static void drawLine(QPainter*, qreal x1, qreal y1, qreal x2, qreal y2);
86 static void drawLine(QPainter*, const QPointF& p1, const QPointF& p2);
87 static void drawLine(QPainter*, const QLineF&);
88
89 static void drawPolygon(QPainter*, const QPolygonF&);
90 static void drawPolyline(QPainter*, const QPolygonF&);
91 static void drawPolyline(QPainter*, const QPointF*, int pointCount);
92
93 static void drawPolygon(QPainter*, const QPolygon&);
94 static void drawPolyline(QPainter*, const QPolygon&);
95 static void drawPolyline(QPainter*, const QPoint*, int pointCount);
96
97 static void drawPoint(QPainter*, const QPoint&);
98 static void drawPoints(QPainter*, const QPolygon&);
99 static void drawPoints(QPainter*, const QPoint*, int pointCount);
100
101 static void drawPoint(QPainter*, qreal x, qreal y);
102 static void drawPoint(QPainter*, const QPointF&);
103 static void drawPoints(QPainter*, const QPolygonF&);
104 static void drawPoints(QPainter*, const QPointF*, int pointCount);
105
106 static void drawPath(QPainter*, const QPainterPath&);
107 static void drawImage(QPainter*, const QRectF&, const QImage&);
108 static void drawPixmap(QPainter*, const QRectF&, const QPixmap&);
109
110 static void drawRoundFrame(QPainter*, const QRectF&, const QPalette&, int lineWidth, int frameStyle);
111
112 static void
113 drawRoundedFrame(QPainter*, const QRectF&, qreal xRadius, qreal yRadius, const QPalette&, int lineWidth, int frameStyle);
114
115 static void drawFrame(QPainter*,
116 const QRectF& rect,
117 const QPalette& palette,
118 QPalette::ColorRole foregroundRole,
119 int lineWidth,
120 int midLineWidth,
121 int frameStyle);
122
123 static void drawFocusRect(QPainter*, const QWidget*);
124 static void drawFocusRect(QPainter*, const QWidget*, const QRect&);
125
126 static void
127 drawColorBar(QPainter*, const QwtColorMap&, const QwtInterval&, const QwtScaleMap&, Qt::Orientation, const QRectF&);
128
129 static bool isAligning(const QPainter*);
130 static bool isX11GraphicsSystem();
131
132 static void fillPixmap(const QWidget*, QPixmap&, const QPoint& offset = QPoint());
133 static void fillRegion(QPainter* painter, const QRegion& region);
134 static void fillBackground(QPainter* painter, QWidget* widget, const QVector< QRectF >& fillRects);
135 static void fillBackground(QPainter* painter, QWidget* canvas);
136
137 static void drawBackgound(QPainter*, const QRectF&, const QWidget*);
138 // Draw the widget background
139 static void drawCanvasBackgound(QPainter* painter, QWidget* canvas);
140
141 static void drawStyledBackground(QWidget* w, QPainter* painter);
142
143 static QPixmap backingStore(QWidget*, const QSize&);
144 static qreal devicePixelRatio(const QPaintDevice*);
145
146 static qreal effectivePenWidth(const QPen&);
147
148 static int horizontalAdvance(const QFontMetrics&, const QString&);
149 static qreal horizontalAdvance(const QFontMetricsF&, const QString&);
150
151 static int horizontalAdvance(const QFontMetrics&, QChar);
152 static qreal horizontalAdvance(const QFontMetricsF&, QChar);
153
154 static QFont scaledFont(const QFont&, const QPaintDevice* = nullptr);
155
156 static QWidget* findBackgroundWidget(QWidget* w);
157
158private:
159 static bool m_polylineSplitting;
160 static bool m_roundingAlignment;
161};
162
164inline void QwtPainter::drawPoint(QPainter* painter, qreal x, qreal y)
165{
166 QwtPainter::drawPoint(painter, QPointF(x, y));
167}
168
170inline void QwtPainter::drawPoints(QPainter* painter, const QPolygon& polygon)
171{
172 drawPoints(painter, polygon.data(), polygon.size());
173}
174
176inline void QwtPainter::drawPoints(QPainter* painter, const QPolygonF& polygon)
177{
178 drawPoints(painter, polygon.data(), polygon.size());
179}
180
182inline void QwtPainter::drawLine(QPainter* painter, qreal x1, qreal y1, qreal x2, qreal y2)
183{
184 QwtPainter::drawLine(painter, QPointF(x1, y1), QPointF(x2, y2));
185}
186
188inline void QwtPainter::drawLine(QPainter* painter, const QLineF& line)
189{
190 QwtPainter::drawLine(painter, line.p1(), line.p2());
191}
192
198{
199 return m_polylineSplitting;
200}
201
211{
212 return m_roundingAlignment;
213}
214
219inline bool QwtPainter::roundingAlignment(const QPainter* painter)
220{
221 return m_roundingAlignment && isAligning(painter);
222}
223
228inline qreal QwtPainter::effectivePenWidth(const QPen& pen)
229{
230 const qreal width = pen.widthF();
231 return (width < 1.0) ? 1.0 : width;
232}
233
234#endif
QwtColorMap is used to map values into colors.
Definition qwt_colormap.h:33
A class representing an interval
Definition qwt_interval.h:39
A collection of QPainter workarounds
Definition qwt_painter.h:60
static void drawPoints(QPainter *, const QPolygon &)
Wrapper for QPainter::drawPoints()
Definition qwt_painter.h:170
static bool polylineSplitting()
Definition qwt_painter.h:197
static bool isAligning(const QPainter *)
Check if the painter is using a paint engine that aligns coordinates to integers
Definition qwt_painter.cpp:261
static qreal effectivePenWidth(const QPen &)
Definition qwt_painter.h:228
static void drawPoint(QPainter *, const QPoint &)
Wrapper for QPainter::drawPoint()
Definition qwt_painter.cpp:630
static bool roundingAlignment()
Check whether coordinates should be rounded, before they are painted to a paint engine that rounds to...
Definition qwt_painter.h:210
static void drawLine(QPainter *, qreal x1, qreal y1, qreal x2, qreal y2)
Wrapper for QPainter::drawLine()
Definition qwt_painter.h:182
A scale map
Definition qwt_scale_map.h:44