⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qwt__plot__curve_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00622"></a>00622                 <span class="comment">// we always need the complete </span><a name="l00623"></a>00623                 <span class="comment">// curve for fitting</span><a name="l00624"></a>00624                 from = 0;<a name="l00625"></a>00625                 to = <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() - 1;<a name="l00626"></a>00626             }<a name="l00627"></a>00627             <a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">drawLines</a>(painter, xMap, yMap, from, to);<a name="l00628"></a>00628             <span class="keywordflow">break</span>;<a name="l00629"></a>00629         <span class="keywordflow">case</span> Sticks:<a name="l00630"></a>00630             <a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">drawSticks</a>(painter, xMap, yMap, from, to);<a name="l00631"></a>00631             <span class="keywordflow">break</span>;<a name="l00632"></a>00632         <span class="keywordflow">case</span> Steps:<a name="l00633"></a>00633             <a class="code" href="class_qwt_plot_curve.html#46fe8d36454bc19b71615e3df96aa2e9">drawSteps</a>(painter, xMap, yMap, from, to);<a name="l00634"></a>00634             <span class="keywordflow">break</span>;<a name="l00635"></a>00635         <span class="keywordflow">case</span> Dots:<a name="l00636"></a>00636             <a class="code" href="class_qwt_plot_curve.html#6fcda40f4bd62fb3a91017ed9e7e49dc">drawDots</a>(painter, xMap, yMap, from, to);<a name="l00637"></a>00637             <span class="keywordflow">break</span>;<a name="l00638"></a>00638         <span class="keywordflow">case</span> NoCurve:<a name="l00639"></a>00639         <span class="keywordflow">default</span>:<a name="l00640"></a>00640             <span class="keywordflow">break</span>;<a name="l00641"></a>00641     }<a name="l00642"></a>00642 }<a name="l00643"></a>00643 <a name="l00659"></a><a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">00659</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">QwtPlotCurve::drawLines</a>(QPainter *painter,<a name="l00660"></a>00660     <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &amp;xMap, <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &amp;yMap, <a name="l00661"></a>00661     <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00662"></a>00662 <span class="keyword"></span>{<a name="l00663"></a>00663     <span class="keywordtype">int</span> size = to - from + 1;<a name="l00664"></a>00664     <span class="keywordflow">if</span> ( size &lt;= 0 )<a name="l00665"></a>00665         <span class="keywordflow">return</span>;<a name="l00666"></a>00666 <a name="l00667"></a>00667     QwtPolygon polyline;<a name="l00668"></a>00668     <span class="keywordflow">if</span> ( ( d_data-&gt;attributes &amp; Fitted ) &amp;&amp; d_data-&gt;curveFitter )<a name="l00669"></a>00669     {<a name="l00670"></a>00670         <span class="comment">// Transform x and y values to window coordinates</span><a name="l00671"></a>00671         <span class="comment">// to avoid a distinction between linear and</span><a name="l00672"></a>00672         <span class="comment">// logarithmic scales.</span><a name="l00673"></a>00673 <a name="l00674"></a>00674 <span class="preprocessor">#if QT_VERSION &lt; 0x040000</span><a name="l00675"></a>00675 <span class="preprocessor"></span>        QwtArray&lt;QwtDoublePoint&gt; points(size);<a name="l00676"></a>00676 <span class="preprocessor">#else</span><a name="l00677"></a>00677 <span class="preprocessor"></span>        QPolygonF points(size);<a name="l00678"></a>00678 <span class="preprocessor">#endif</span><a name="l00679"></a>00679 <span class="preprocessor"></span>        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from; i &lt;= to; i++)<a name="l00680"></a>00680         {<a name="l00681"></a>00681             QwtDoublePoint &amp;p = points[i];<a name="l00682"></a>00682             p.setX( xMap.<a class="code" href="class_qwt_scale_map.html#053cad00dd463f45c7e1591c9f2d8296">xTransform</a>(<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>(i)) );<a name="l00683"></a>00683             p.setY( yMap.<a class="code" href="class_qwt_scale_map.html#053cad00dd463f45c7e1591c9f2d8296">xTransform</a>(<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>(i)) );<a name="l00684"></a>00684         }<a name="l00685"></a>00685 <a name="l00686"></a>00686         points = d_data-&gt;curveFitter-&gt;fitCurve(points);<a name="l00687"></a>00687         size = points.size();<a name="l00688"></a>00688 <a name="l00689"></a>00689         <span class="keywordflow">if</span> ( size == 0 )<a name="l00690"></a>00690             <span class="keywordflow">return</span>;<a name="l00691"></a>00691 <a name="l00692"></a>00692         <span class="comment">// Round QwtDoublePoints to QPoints</span><a name="l00693"></a>00693         <span class="comment">// When Qwt support for Qt3 has been dropped (Qwt 6.x)</span><a name="l00694"></a>00694         <span class="comment">// we will use a doubles for painting and the following</span><a name="l00695"></a>00695         <span class="comment">// step will be obsolete.</span><a name="l00696"></a>00696 <a name="l00697"></a>00697         polyline.resize(size);<a name="l00698"></a>00698 <a name="l00699"></a>00699         <span class="keyword">const</span> QwtDoublePoint *p = points.data();<a name="l00700"></a>00700         QPoint *pl = polyline.data();<a name="l00701"></a>00701         <span class="keywordflow">if</span> ( d_data-&gt;paintAttributes &amp; PaintFiltered )<a name="l00702"></a>00702         {<a name="l00703"></a>00703 <a name="l00704"></a>00704             QPoint pp(qRound(p[0].<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>()), qRound(p[0].<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>()));<a name="l00705"></a>00705             pl[0] = pp;<a name="l00706"></a>00706 <a name="l00707"></a>00707             <span class="keywordtype">int</span> count = 1;<a name="l00708"></a>00708             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; size; i++)<a name="l00709"></a>00709             {<a name="l00710"></a>00710                 <span class="keyword">const</span> QPoint pi(qRound(p[i].<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>()), qRound(p[i].<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>()));<a name="l00711"></a>00711                 <span class="keywordflow">if</span> ( pi != pp )<a name="l00712"></a>00712                 {<a name="l00713"></a>00713                     pl[count++] = pi;<a name="l00714"></a>00714                     pp = pi;<a name="l00715"></a>00715                 }<a name="l00716"></a>00716             }<a name="l00717"></a>00717             <span class="keywordflow">if</span> ( count != size )<a name="l00718"></a>00718                 polyline.resize(count);<a name="l00719"></a>00719         }<a name="l00720"></a>00720         <span class="keywordflow">else</span><a name="l00721"></a>00721         {<a name="l00722"></a>00722             <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; size; i++ )<a name="l00723"></a>00723             {<a name="l00724"></a>00724                 pl[i].setX( qRound(p[i].x()) );<a name="l00725"></a>00725                 pl[i].setY( qRound(p[i].y()) );<a name="l00726"></a>00726             }<a name="l00727"></a>00727         }<a name="l00728"></a>00728     }<a name="l00729"></a>00729     <span class="keywordflow">else</span><a name="l00730"></a>00730     {<a name="l00731"></a>00731         polyline.resize(size);<a name="l00732"></a>00732 <a name="l00733"></a>00733         <span class="keywordflow">if</span> ( d_data-&gt;paintAttributes &amp; PaintFiltered )<a name="l00734"></a>00734         {<a name="l00735"></a>00735             QPoint pp( xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(from)), yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(from)) );<a name="l00736"></a>00736             polyline.setPoint(0, pp);<a name="l00737"></a>00737 <a name="l00738"></a>00738             <span class="keywordtype">int</span> count = 1;<a name="l00739"></a>00739             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from + 1; i &lt;= to; i++)<a name="l00740"></a>00740             {<a name="l00741"></a>00741                 <span class="keyword">const</span> QPoint pi(xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(i)), yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(i)));<a name="l00742"></a>00742                 <span class="keywordflow">if</span> ( pi != pp )<a name="l00743"></a>00743                 {<a name="l00744"></a>00744                     polyline.setPoint(count, pi);<a name="l00745"></a>00745                     count++;<a name="l00746"></a>00746 <a name="l00747"></a>00747                     pp = pi;<a name="l00748"></a>00748                 }<a name="l00749"></a>00749             }<a name="l00750"></a>00750             <span class="keywordflow">if</span> ( count != size )<a name="l00751"></a>00751                 polyline.resize(count);<a name="l00752"></a>00752         }<a name="l00753"></a>00753         <span class="keywordflow">else</span><a name="l00754"></a>00754         {<a name="l00755"></a>00755             <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from; i &lt;= to; i++)<a name="l00756"></a>00756             {<a name="l00757"></a>00757                 <span class="keywordtype">int</span> xi = xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(i));<a name="l00758"></a>00758                 <span class="keywordtype">int</span> yi = yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(i));<a name="l00759"></a>00759 <a name="l00760"></a>00760                 polyline.setPoint(i - from, xi, yi);<a name="l00761"></a>00761             }<a name="l00762"></a>00762         }<a name="l00763"></a>00763     }<a name="l00764"></a>00764 <a name="l00765"></a>00765     <span class="keywordflow">if</span> ( d_data-&gt;paintAttributes &amp; ClipPolygons )<a name="l00766"></a>00766     {<a name="l00767"></a>00767         <a class="code" href="class_qwt_rect.html">QwtRect</a> r = painter-&gt;window();<a name="l00768"></a>00768         polyline = r.<a class="code" href="class_qwt_rect.html#89bfabf3416a3b535451a83e91a12d13">clip</a>(polyline);<a name="l00769"></a>00769     }<a name="l00770"></a>00770 <a name="l00771"></a>00771     <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">QwtPainter::drawPolyline</a>(painter, polyline);<a name="l00772"></a>00772 <a name="l00773"></a>00773     <span class="keywordflow">if</span> ( d_data-&gt;brush.style() != Qt::NoBrush )<a name="l00774"></a>00774         fillCurve(painter, xMap, yMap, polyline);<a name="l00775"></a>00775 }<a name="l00776"></a>00776 <a name="l00788"></a><a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">00788</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">QwtPlotCurve::drawSticks</a>(QPainter *painter,<a name="l00789"></a>00789     <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &amp;xMap, <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &amp;yMap, <a name="l00790"></a>00790     <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00791"></a>00791 <span class="keyword"></span>{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -