QWT API (中文) 7.0.1
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
68class QWT_EXPORT QwtPainter
69{
70public:
71 static void setPolylineSplitting(bool);
72 static bool polylineSplitting();
73
74 static void setRoundingAlignment(bool);
75 static bool roundingAlignment();
76 static bool roundingAlignment(const QPainter*);
77
78 static void drawText(QPainter*, qreal x, qreal y, const QString&);
79 static void drawText(QPainter*, const QPointF&, const QString&);
80 static void drawText(QPainter*, qreal x, qreal y, qreal w, qreal h, int flags, const QString&);
81 static void drawText(QPainter*, const QRectF&, int flags, const QString&);
82
83#ifndef QT_NO_RICHTEXT
84 static void drawSimpleRichText(QPainter*, const QRectF&, int flags, const QTextDocument&);
85#endif
86
87 static void drawRect(QPainter*, qreal x, qreal y, qreal w, qreal h);
88 static void drawRect(QPainter*, const QRectF& rect);
89 static void fillRect(QPainter*, const QRectF&, const QBrush&);
90
91 static void drawEllipse(QPainter*, const QRectF&);
92 static void drawPie(QPainter*, const QRectF& r, int a, int alen);
93
94 static void drawLine(QPainter*, qreal x1, qreal y1, qreal x2, qreal y2);
95 static void drawLine(QPainter*, const QPointF& p1, const QPointF& p2);
96 static void drawLine(QPainter*, const QLineF&);
97
98 static void drawPolygon(QPainter*, const QPolygonF&);
99 static void drawPolyline(QPainter*, const QPolygonF&);
100 static void drawPolyline(QPainter*, const QPointF*, int pointCount);
101
102 static void drawPolygon(QPainter*, const QPolygon&);
103 static void drawPolyline(QPainter*, const QPolygon&);
104 static void drawPolyline(QPainter*, const QPoint*, int pointCount);
105
106 static void drawPoint(QPainter*, const QPoint&);
107 static void drawPoints(QPainter*, const QPolygon&);
108 static void drawPoints(QPainter*, const QPoint*, int pointCount);
109
110 static void drawPoint(QPainter*, qreal x, qreal y);
111 static void drawPoint(QPainter*, const QPointF&);
112 static void drawPoints(QPainter*, const QPolygonF&);
113 static void drawPoints(QPainter*, const QPointF*, int pointCount);
114
115 static void drawPath(QPainter*, const QPainterPath&);
116 static void drawImage(QPainter*, const QRectF&, const QImage&);
117 static void drawPixmap(QPainter*, const QRectF&, const QPixmap&);
118
119 static void drawRoundFrame(QPainter*, const QRectF&, const QPalette&, int lineWidth, int frameStyle);
120
121 static void drawRoundedFrame(QPainter*, const QRectF&, qreal xRadius, qreal yRadius, const QPalette&, int lineWidth, int frameStyle);
122
123 static void drawFrame(QPainter*,
124 const QRectF& rect,
125 const QPalette& palette,
126 QPalette::ColorRole foregroundRole,
127 int lineWidth,
128 int midLineWidth,
129 int frameStyle);
130
131 static void drawFocusRect(QPainter*, const QWidget*);
132 static void drawFocusRect(QPainter*, const QWidget*, const QRect&);
133
134 static void drawColorBar(QPainter*, const QwtColorMap&, const QwtInterval&, const QwtScaleMap&, Qt::Orientation, const QRectF&);
135
136 static bool isAligning(const QPainter*);
137 static bool isX11GraphicsSystem();
138
139 static void fillPixmap(const QWidget*, QPixmap&, const QPoint& offset = QPoint());
140 static void fillRegion(QPainter* painter, const QRegion& region);
141 static void fillBackground(QPainter* painter, QWidget* widget, const QVector< QRectF >& fillRects);
142 static void fillBackground(QPainter* painter, QWidget* canvas);
143
144 static void drawBackgound(QPainter*, const QRectF&, const QWidget*);
145 // 绘制widget的背景
146 static void drawCanvasBackgound(QPainter* painter, QWidget* canvas);
147
148 static void drawStyledBackground(QWidget* w, QPainter* painter);
149
150 static QPixmap backingStore(QWidget*, const QSize&);
151 static qreal devicePixelRatio(const QPaintDevice*);
152
153 static qreal effectivePenWidth(const QPen&);
154
155 static int horizontalAdvance(const QFontMetrics&, const QString&);
156 static qreal horizontalAdvance(const QFontMetricsF&, const QString&);
157
158 static int horizontalAdvance(const QFontMetrics&, QChar);
159 static qreal horizontalAdvance(const QFontMetricsF&, QChar);
160
161 static QFont scaledFont(const QFont&, const QPaintDevice* = nullptr);
162
163 static QWidget* findBackgroundWidget(QWidget* w);
164
165private:
166 static bool m_polylineSplitting;
167 static bool m_roundingAlignment;
168};
169
171inline void QwtPainter::drawPoint(QPainter* painter, qreal x, qreal y)
172{
173 QwtPainter::drawPoint(painter, QPointF(x, y));
174}
175
177inline void QwtPainter::drawPoints(QPainter* painter, const QPolygon& polygon)
178{
179 drawPoints(painter, polygon.data(), polygon.size());
180}
181
183inline void QwtPainter::drawPoints(QPainter* painter, const QPolygonF& polygon)
184{
185 drawPoints(painter, polygon.data(), polygon.size());
186}
187
189inline void QwtPainter::drawLine(QPainter* painter, qreal x1, qreal y1, qreal x2, qreal y2)
190{
191 QwtPainter::drawLine(painter, QPointF(x1, y1), QPointF(x2, y2));
192}
193
195inline void QwtPainter::drawLine(QPainter* painter, const QLineF& line)
196{
197 QwtPainter::drawLine(painter, line.p1(), line.p2());
198}
199
205{
206 return m_polylineSplitting;
207}
208
218{
219 return m_roundingAlignment;
220}
221
226inline bool QwtPainter::roundingAlignment(const QPainter* painter)
227{
228 return m_roundingAlignment && isAligning(painter);
229}
230
235inline qreal QwtPainter::effectivePenWidth(const QPen& pen)
236{
237 const qreal width = pen.widthF();
238 return (width < 1.0) ? 1.0 : width;
239}
240
241#endif
QwtColorMap 用于将数值映射为颜色。
Definition qwt_color_map.h:62
表示区间的类
Definition qwt_interval.h:45
QPainter绘制操作的封装和兼容性处理集合
Definition qwt_painter.h:69
static void drawPoints(QPainter *, const QPolygon &)
Wrapper for QPainter::drawPoints()
Definition qwt_painter.h:177
static bool polylineSplitting()
Definition qwt_painter.h:204
static bool isAligning(const QPainter *)
检查画笔是否使用对齐到整数的绘制引擎
Definition qwt_painter.cpp:282
static qreal effectivePenWidth(const QPen &)
Definition qwt_painter.h:235
static void drawPoint(QPainter *, const QPoint &)
Wrapper for QPainter::drawPoint()
Definition qwt_painter.cpp:684
static bool roundingAlignment()
Check whether coordinates should be rounded, before they are painted to a paint engine that rounds to...
Definition qwt_painter.h:217
static void drawLine(QPainter *, qreal x1, qreal y1, qreal x2, qreal y2)
Wrapper for QPainter::drawLine()
Definition qwt_painter.h:189
刻度映射
Definition qwt_scale_map.h:52