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

📄 qwt__plot__curve_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00424"></a><a class="code" href="class_qwt_plot_curve.html#35533bd778842cf45b283a2baf5ff4a4">00424</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#35533bd778842cf45b283a2baf5ff4a4">QwtPlotCurve::setRawData</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *xData, <span class="keyword">const</span> <span class="keywordtype">double</span> *yData, <span class="keywordtype">int</span> size)<a name="l00425"></a>00425 {<a name="l00426"></a>00426     <span class="keyword">delete</span> d_xy;<a name="l00427"></a>00427     d_xy = <span class="keyword">new</span> <a class="code" href="class_qwt_c_pointer_data.html">QwtCPointerData</a>(xData, yData, size);<a name="l00428"></a>00428     <a class="code" href="class_qwt_plot_item.html#d956fdbce5b0721abccce6d09fe4d5ce">itemChanged</a>();<a name="l00429"></a>00429 }<a name="l00430"></a>00430 <a name="l00437"></a><a class="code" href="class_qwt_plot_curve.html#592742a3aa52a81bd9ea548e81a50f12">00437</a> QwtDoubleRect <a class="code" href="class_qwt_plot_curve.html#592742a3aa52a81bd9ea548e81a50f12">QwtPlotCurve::boundingRect</a>()<span class="keyword"> const</span><a name="l00438"></a>00438 <span class="keyword"></span>{<a name="l00439"></a>00439     <span class="keywordflow">if</span> ( d_xy == NULL )<a name="l00440"></a>00440         <span class="keywordflow">return</span> QwtDoubleRect(1.0, 1.0, -2.0, -2.0); <span class="comment">// invalid</span><a name="l00441"></a>00441 <a name="l00442"></a>00442     <span class="keywordflow">return</span> d_xy-&gt;<a class="code" href="class_qwt_data.html#d72b6842ce6af1f61f9643786d63a91f">boundingRect</a>();<a name="l00443"></a>00443 }<a name="l00444"></a>00444 <a name="l00454"></a><a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">00454</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(QPainter *painter,<a name="l00455"></a>00455     <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="l00456"></a>00456     <span class="keyword">const</span> QRect &amp;)<span class="keyword"> const</span><a name="l00457"></a>00457 <span class="keyword"></span>{<a name="l00458"></a>00458     <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">draw</a>(painter, xMap, yMap, 0, -1);<a name="l00459"></a>00459 }<a name="l00460"></a>00460 <a name="l00478"></a><a class="code" href="class_qwt_plot_curve.html#57cabe79dbb0df094f5c337689ff88a0">00478</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(<span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00479"></a>00479 <span class="keyword"></span>{<a name="l00480"></a>00480     <span class="keywordflow">if</span> ( !<a class="code" href="class_qwt_plot_item.html#4c99653a14a49ad94d466168d06e97b9">plot</a>() )<a name="l00481"></a>00481         <span class="keywordflow">return</span>;<a name="l00482"></a>00482 <a name="l00483"></a>00483     <a class="code" href="class_qwt_plot_canvas.html">QwtPlotCanvas</a> *canvas = <a class="code" href="class_qwt_plot_item.html#4c99653a14a49ad94d466168d06e97b9">plot</a>()-&gt;<a class="code" href="class_qwt_plot.html#afcc82150034fbeb393ceb9f54ba2f1a">canvas</a>();<a name="l00484"></a>00484 <a name="l00485"></a>00485     <span class="keywordtype">bool</span> directPaint = <span class="keyword">true</span>;<a name="l00486"></a>00486 <a name="l00487"></a>00487 <span class="preprocessor">#if QT_VERSION &gt;= 0x040000</span><a name="l00488"></a>00488 <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( !canvas-&gt;testAttribute(Qt::WA_WState_InPaintEvent) &amp;&amp;<a name="l00489"></a>00489         !canvas-&gt;testAttribute(Qt::WA_PaintOutsidePaintEvent) )<a name="l00490"></a>00490     {<a name="l00491"></a>00491         <span class="comment">/*</span><a name="l00492"></a>00492 <span class="comment">          We save curve and range in helper and call repaint.</span><a name="l00493"></a>00493 <span class="comment">          The helper filters the Paint event, to repeat</span><a name="l00494"></a>00494 <span class="comment">          the QwtPlotCurve::draw, but now from inside the paint</span><a name="l00495"></a>00495 <span class="comment">          event.</span><a name="l00496"></a>00496 <span class="comment">         */</span><a name="l00497"></a>00497 <a name="l00498"></a>00498         QwtPlotCurvePaintHelper helper(<span class="keyword">this</span>, from, to);<a name="l00499"></a>00499         canvas-&gt;installEventFilter(&amp;helper);<a name="l00500"></a>00500         canvas-&gt;repaint();<a name="l00501"></a>00501 <a name="l00502"></a>00502         <span class="keywordflow">return</span>;<a name="l00503"></a>00503     }<a name="l00504"></a>00504 <span class="preprocessor">#endif</span><a name="l00505"></a>00505 <span class="preprocessor"></span><a name="l00506"></a>00506     <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> xMap = plot()-&gt;canvasMap(xAxis());<a name="l00507"></a>00507     <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> yMap = plot()-&gt;canvasMap(yAxis());<a name="l00508"></a>00508 <a name="l00509"></a>00509     <span class="keywordflow">if</span> ( canvas-&gt;testPaintAttribute(QwtPlotCanvas::PaintCached) &amp;&amp;<a name="l00510"></a>00510         canvas-&gt;paintCache() &amp;&amp; !canvas-&gt;paintCache()-&gt;isNull() )<a name="l00511"></a>00511     {<a name="l00512"></a>00512         QPainter cachePainter((QPixmap *)canvas-&gt;paintCache());<a name="l00513"></a>00513         cachePainter.translate(-canvas-&gt;contentsRect().x(),<a name="l00514"></a>00514             -canvas-&gt;contentsRect().y());<a name="l00515"></a>00515 <a name="l00516"></a>00516         draw(&amp;cachePainter, xMap, yMap, from, to);<a name="l00517"></a>00517     }<a name="l00518"></a>00518 <a name="l00519"></a>00519     <span class="keywordflow">if</span> ( directPaint )<a name="l00520"></a>00520     {<a name="l00521"></a>00521         QPainter painter(canvas);<a name="l00522"></a>00522 <a name="l00523"></a>00523         painter.setClipping(<span class="keyword">true</span>);<a name="l00524"></a>00524         painter.setClipRect(canvas-&gt;contentsRect());<a name="l00525"></a>00525 <a name="l00526"></a>00526         draw(&amp;painter, xMap, yMap, from, to);<a name="l00527"></a>00527 <a name="l00528"></a>00528         <span class="keywordflow">return</span>;<a name="l00529"></a>00529     }<a name="l00530"></a>00530 <a name="l00531"></a>00531 <span class="preprocessor">#if QT_VERSION &gt;= 0x040000</span><a name="l00532"></a>00532 <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( canvas-&gt;testPaintAttribute(QwtPlotCanvas::PaintCached) &amp;&amp;<a name="l00533"></a>00533         canvas-&gt;paintCache() )<a name="l00534"></a>00534     {<a name="l00535"></a>00535         <span class="comment">/*</span><a name="l00536"></a>00536 <span class="comment">          The cache is up to date. We flush it via repaint to the</span><a name="l00537"></a>00537 <span class="comment">          canvas. This works flicker free but is much ( &gt; 10x )</span><a name="l00538"></a>00538 <span class="comment">          slower than direct painting.</span><a name="l00539"></a>00539 <span class="comment">         */</span><a name="l00540"></a>00540 <a name="l00541"></a>00541         <span class="keyword">const</span> <span class="keywordtype">bool</span> noBG = canvas-&gt;testAttribute(Qt::WA_NoBackground);<a name="l00542"></a>00542         <span class="keywordflow">if</span> ( !noBG )<a name="l00543"></a>00543             canvas-&gt;setAttribute(Qt::WA_NoBackground, <span class="keyword">true</span>);<a name="l00544"></a>00544 <a name="l00545"></a>00545         canvas-&gt;repaint(canvas-&gt;contentsRect());<a name="l00546"></a>00546 <a name="l00547"></a>00547         <span class="keywordflow">if</span> ( !noBG )<a name="l00548"></a>00548             canvas-&gt;setAttribute(Qt::WA_NoBackground, <span class="keyword">false</span>);<a name="l00549"></a>00549 <a name="l00550"></a>00550         <span class="keywordflow">return</span>;<a name="l00551"></a>00551     }<a name="l00552"></a>00552 <span class="preprocessor">#endif</span><a name="l00553"></a>00553 <span class="preprocessor"></span><a name="l00554"></a>00554     <span class="comment">// Ok, we give up </span><a name="l00555"></a>00555     canvas-&gt;repaint(canvas-&gt;contentsRect());<a name="l00556"></a>00556 }<a name="l00557"></a>00557 <a name="l00569"></a><a class="code" href="class_qwt_plot_curve.html#517b93ce008faddb49e706b882f44474">00569</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(QPainter *painter,<a name="l00570"></a>00570     <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="l00571"></a>00571     <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00572"></a>00572 <span class="keyword"></span>{<a name="l00573"></a>00573     <span class="keywordflow">if</span> ( !painter || <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() &lt;= 0 )<a name="l00574"></a>00574         <span class="keywordflow">return</span>;<a name="l00575"></a>00575 <a name="l00576"></a>00576     <span class="keywordflow">if</span> (to &lt; 0)<a name="l00577"></a>00577         to = <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() - 1;<a name="l00578"></a>00578 <a name="l00579"></a>00579     <span class="keywordflow">if</span> ( verifyRange(<a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>(), from, to) &gt; 0 )<a name="l00580"></a>00580     {<a name="l00581"></a>00581         painter-&gt;save();<a name="l00582"></a>00582         painter-&gt;setPen(d_data-&gt;pen);<a name="l00583"></a>00583 <a name="l00584"></a>00584         <span class="comment">/*</span><a name="l00585"></a>00585 <span class="comment">          Qt 4.0.0 is slow when drawing lines, but it麓s even </span><a name="l00586"></a>00586 <span class="comment">          slower when the painter has a brush. So we don't</span><a name="l00587"></a>00587 <span class="comment">          set the brush before we really need it.</span><a name="l00588"></a>00588 <span class="comment">         */</span><a name="l00589"></a>00589 <a name="l00590"></a>00590         <a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">drawCurve</a>(painter, d_data-&gt;style, xMap, yMap, from, to);<a name="l00591"></a>00591         painter-&gt;restore();<a name="l00592"></a>00592 <a name="l00593"></a>00593         <span class="keywordflow">if</span> (d_data-&gt;sym.style() != QwtSymbol::NoSymbol)<a name="l00594"></a>00594         {<a name="l00595"></a>00595             painter-&gt;save();<a name="l00596"></a>00596             <a class="code" href="class_qwt_plot_curve.html#b16f5a4329291305c267beab1a6d2dfe">drawSymbols</a>(painter, d_data-&gt;sym, xMap, yMap, from, to);<a name="l00597"></a>00597             painter-&gt;restore();<a name="l00598"></a>00598         }<a name="l00599"></a>00599     }<a name="l00600"></a>00600 }<a name="l00601"></a>00601 <a name="l00613"></a><a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">00613</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">QwtPlotCurve::drawCurve</a>(QPainter *painter, <span class="keywordtype">int</span> style,<a name="l00614"></a>00614     <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="l00615"></a>00615     <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00616"></a>00616 <span class="keyword"></span>{<a name="l00617"></a>00617     <span class="keywordflow">switch</span> (style)<a name="l00618"></a>00618     {<a name="l00619"></a>00619         <span class="keywordflow">case</span> Lines:<a name="l00620"></a>00620             <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_plot_curve.html#0dc5e6af9ec33a1b54e3c3041c00b939">testCurveAttribute</a>(Fitted) )<a name="l00621"></a>00621             {

⌨️ 快捷键说明

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