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

📄 qwt__round__scale__draw_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00174"></a>00174 <a name="l00175"></a>00175     <span class="keywordtype">double</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data-&gt;radius;<a name="l00176"></a>00176     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Ticks) ||<a name="l00177"></a>00177         <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Backbone) )<a name="l00178"></a>00178     {<a name="l00179"></a>00179         radius += <a class="code" href="class_qwt_abstract_scale_draw.html#b31323219c1a750adde91470698cfa0f">spacing</a>();<a name="l00180"></a>00180     }<a name="l00181"></a>00181 <a name="l00182"></a>00182     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Ticks) )<a name="l00183"></a>00183         radius += <a class="code" href="class_qwt_abstract_scale_draw.html#70d03241a4502cf546c5075d28658601">majTickLength</a>();<a name="l00184"></a>00184 <a name="l00185"></a>00185     <span class="keyword">const</span> QSize sz = <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#6e7ff0a75f1eecc37478f9ca643da379">textSize</a>(painter-&gt;font());<a name="l00186"></a>00186     <span class="keyword">const</span> <span class="keywordtype">double</span> arc = tval / 16.0 / 360.0 * 2 * M_PI;<a name="l00187"></a>00187 <a name="l00188"></a>00188     <span class="keyword">const</span> <span class="keywordtype">int</span> x = d_data-&gt;center.x() +<a name="l00189"></a>00189         qRound((radius + sz.width() / 2.0) * sin(arc));<a name="l00190"></a>00190     <span class="keyword">const</span> <span class="keywordtype">int</span> y = d_data-&gt;center.y() -<a name="l00191"></a>00191         qRound( (radius + sz.height() / 2.0) * cos(arc));<a name="l00192"></a>00192 <a name="l00193"></a>00193     <span class="keyword">const</span> QRect r(x - sz.width() / 2, y - sz.height() / 2,<a name="l00194"></a>00194         sz.width(), sz.height() );<a name="l00195"></a>00195     <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#3907eb112ff2259adbaad4c433178354">draw</a>(painter, r);<a name="l00196"></a>00196 }<a name="l00197"></a>00197 <a name="l00207"></a><a class="code" href="class_qwt_round_scale_draw.html#a4f77a6cbb019ca42f857bf2019acff2">00207</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_round_scale_draw.html#a4f77a6cbb019ca42f857bf2019acff2">QwtRoundScaleDraw::drawTick</a>(QPainter *painter, <span class="keywordtype">double</span> value, <span class="keywordtype">int</span> len)<span class="keyword"> const</span><a name="l00208"></a>00208 <span class="keyword"></span>{<a name="l00209"></a>00209     <span class="keywordflow">if</span> ( len &lt;= 0 )<a name="l00210"></a>00210         <span class="keywordflow">return</span>;<a name="l00211"></a>00211 <a name="l00212"></a>00212     <span class="keyword">const</span> <span class="keywordtype">int</span> tval = <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(value);<a name="l00213"></a>00213 <a name="l00214"></a>00214     <span class="keyword">const</span> <span class="keywordtype">int</span> cx = d_data-&gt;center.x();<a name="l00215"></a>00215     <span class="keyword">const</span> <span class="keywordtype">int</span> cy = d_data-&gt;center.y();<a name="l00216"></a>00216     <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data-&gt;radius;<a name="l00217"></a>00217 <a name="l00218"></a>00218     <span class="keywordflow">if</span> ((tval &lt;= d_data-&gt;minAngle + 359 * 16)<a name="l00219"></a>00219         || (tval &gt;= d_data-&gt;minAngle - 359 * 16))<a name="l00220"></a>00220     {<a name="l00221"></a>00221         <span class="keyword">const</span> <span class="keywordtype">double</span> arc = double(tval) / 16.0 * M_PI / 180.0;<a name="l00222"></a>00222 <a name="l00223"></a>00223         <span class="keyword">const</span> <span class="keywordtype">double</span> sinArc = sin(arc);<a name="l00224"></a>00224         <span class="keyword">const</span> <span class="keywordtype">double</span> cosArc = cos(arc);<a name="l00225"></a>00225 <a name="l00226"></a>00226         <span class="keyword">const</span> <span class="keywordtype">int</span> x1 = qRound( cx + radius * sinArc );<a name="l00227"></a>00227         <span class="keyword">const</span> <span class="keywordtype">int</span> x2 = qRound( cx + (radius + len) * sinArc );<a name="l00228"></a>00228         <span class="keyword">const</span> <span class="keywordtype">int</span> y1 = qRound( cy - radius * cosArc );<a name="l00229"></a>00229         <span class="keyword">const</span> <span class="keywordtype">int</span> y2 = qRound( cy - (radius + len) * cosArc );<a name="l00230"></a>00230 <a name="l00231"></a>00231         <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, x1, y1, x2, y2);<a name="l00232"></a>00232     }<a name="l00233"></a>00233 }<a name="l00234"></a>00234 <a name="l00241"></a><a class="code" href="class_qwt_round_scale_draw.html#845dc48b006ee168415112f39e80da09">00241</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_round_scale_draw.html#845dc48b006ee168415112f39e80da09">QwtRoundScaleDraw::drawBackbone</a>(QPainter *painter)<span class="keyword"> const</span><a name="l00242"></a>00242 <span class="keyword"></span>{<a name="l00243"></a>00243     <span class="keyword">const</span> <span class="keywordtype">int</span> a1 = qRound(qwtMin(<a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p1(), <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p2()) - 90 * 16);<a name="l00244"></a>00244     <span class="keyword">const</span> <span class="keywordtype">int</span> a2 = qRound(qwtMax(<a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p1(), <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p2()) - 90 * 16);<a name="l00245"></a>00245 <a name="l00246"></a>00246     <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data-&gt;radius;<a name="l00247"></a>00247     <span class="keyword">const</span> <span class="keywordtype">int</span> x = d_data-&gt;center.x() - radius;<a name="l00248"></a>00248     <span class="keyword">const</span> <span class="keywordtype">int</span> y = d_data-&gt;center.y() - radius;<a name="l00249"></a>00249 <a name="l00250"></a>00250     painter-&gt;drawArc(x, y, 2 * radius, 2 * radius,<a name="l00251"></a>00251         -a2, a2 - a1 + 1);           <span class="comment">// counterclockwise</span><a name="l00252"></a>00252 }<a name="l00253"></a>00253 <a name="l00269"></a><a class="code" href="class_qwt_round_scale_draw.html#50f5d69dceab6ccf5e00bd2a7953d897">00269</a> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#50f5d69dceab6ccf5e00bd2a7953d897">QwtRoundScaleDraw::extent</a>(<span class="keyword">const</span> QPen &amp;pen, <span class="keyword">const</span> QFont &amp;font)<span class="keyword"> const</span><a name="l00270"></a>00270 <span class="keyword"></span>{<a name="l00271"></a>00271     <span class="keywordtype">int</span> d = 0;<a name="l00272"></a>00272 <a name="l00273"></a>00273     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Labels) )<a name="l00274"></a>00274     {<a name="l00275"></a>00275         <span class="keyword">const</span> <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a> &amp;sd = <a class="code" href="class_qwt_abstract_scale_draw.html#82510027cd5bee269628c9d6302a19a9">scaleDiv</a>();<a name="l00276"></a>00276         <span class="keyword">const</span> QwtValueList &amp;ticks = sd.<a class="code" href="class_qwt_scale_div.html#c6310b93e4b505e62d2141ba6a8e90ee">ticks</a>(QwtScaleDiv::MajorTick);<a name="l00277"></a>00277         <span class="keywordflow">for</span> (uint i = 0; i &lt; (uint)ticks.count(); i++)<a name="l00278"></a>00278         {<a name="l00279"></a>00279             <span class="keyword">const</span> <span class="keywordtype">double</span> value = ticks[i];<a name="l00280"></a>00280             <span class="keywordflow">if</span> ( !sd.<a class="code" href="class_qwt_scale_div.html#9fe271ba1bee08d01033ce964c3216c1">contains</a>(value) )<a name="l00281"></a>00281                 <span class="keywordflow">continue</span>;<a name="l00282"></a>00282 <a name="l00283"></a>00283             <span class="keyword">const</span> <a class="code" href="class_qwt_text.html">QwtText</a> <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a> = <a class="code" href="class_qwt_abstract_scale_draw.html#5e703dcb115a51024f89f92e61c2c8d8">tickLabel</a>(font, value);<a name="l00284"></a>00284             <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#25843b1120b648752ed5be2247ebe43f">isEmpty</a>() )<a name="l00285"></a>00285                 <span class="keywordflow">continue</span>;<a name="l00286"></a>00286                 <a name="l00287"></a>00287             <span class="keyword">const</span> <span class="keywordtype">int</span> tval = <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(value);<a name="l00288"></a>00288             <span class="keywordflow">if</span> ((tval &lt; d_data-&gt;minAngle + 360 * 16)<a name="l00289"></a>00289                 &amp;&amp; (tval &gt; d_data-&gt;minAngle - 360 * 16))<a name="l00290"></a>00290             {<a name="l00291"></a>00291                 <span class="keyword">const</span> <span class="keywordtype">double</span> arc = tval / 16.0 / 360.0 * 2 * M_PI;<a name="l00292"></a>00292 <a name="l00293"></a>00293                 <span class="keyword">const</span> QSize sz = <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#6e7ff0a75f1eecc37478f9ca643da379">textSize</a>(font);<a name="l00294"></a>00294                 <span class="keyword">const</span> <span class="keywordtype">double</span> off = qwtMax(sz.width(), sz.height());<a name="l00295"></a>00295 <a name="l00296"></a>00296                 <span class="keywordtype">double</span> x = off * sin(arc);<a name="l00297"></a>00297                 <span class="keywordtype">double</span> y = off * cos(arc);<a name="l00298"></a>00298 <a name="l00299"></a>00299                 <span class="keyword">const</span> <span class="keywordtype">int</span> dist = (int)ceil(sqrt(x * x + y * y) + 1 );<a name="l00300"></a>00300                 <span class="keywordflow">if</span> ( dist &gt; d )<a name="l00301"></a>00301                     d = dist;<a name="l00302"></a>00302             }<a name="l00303"></a>00303         }<a name="l00304"></a>00304     }<a name="l00305"></a>00305 <a name="l00306"></a>00306     <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Ticks) )<a name="l00307"></a>00307     {<a name="l00308"></a>00308         d += majTickLength();<a name="l00309"></a>00309     }<a name="l00310"></a>00310 <a name="l00311"></a>00311     <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Backbone) )<a name="l00312"></a>00312     {<a name="l00313"></a>00313         <span class="keyword">const</span> <span class="keywordtype">int</span> pw = qwtMax( 1, pen.width() );  <span class="comment">// penwidth can be zero</span><a name="l00314"></a>00314         d += pw;<a name="l00315"></a>00315     }<a name="l00316"></a>00316 <a name="l00317"></a>00317     <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Labels) &amp;&amp;<a name="l00318"></a>00318         ( hasComponent(QwtAbstractScaleDraw::Ticks) || <a name="l00319"></a>00319             hasComponent(QwtAbstractScaleDraw::Backbone) ) )<a name="l00320"></a>00320     {<a name="l00321"></a>00321         d += spacing();<a name="l00322"></a>00322     }<a name="l00323"></a>00323 <a name="l00324"></a>00324     d = qwtMax(d, minimumExtent());<a name="l00325"></a>00325 <a name="l00326"></a>00326     <span class="keywordflow">return</span> d;<a name="l00327"></a>00327 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 26 21:22:38 2007 for Qwt User's Guide by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address></body></html>

⌨️ 快捷键说明

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