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

📄 qwt__painter_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00377"></a>00377 <span class="preprocessor"></span><a name="l00381"></a>00381 <span class="preprocessor">#if QT_VERSION &lt; 0x040000</span><a name="l00382"></a>00382 <span class="preprocessor"></span><a name="l00383"></a>00383 <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">QwtPainter::drawSimpleRichText</a>(QPainter *painter, <span class="keyword">const</span> QRect &amp;rect,<a name="l00384"></a>00384     <span class="keywordtype">int</span> flags, QSimpleRichText &amp;text)<a name="l00385"></a>00385 {<a name="l00386"></a>00386     QColorGroup cg;<a name="l00387"></a>00387     cg.setColor(QColorGroup::Text, painter-&gt;pen().color());<a name="l00388"></a>00388 <a name="l00389"></a>00389     <span class="keyword">const</span> QRect scaledRect = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(rect, painter);<a name="l00390"></a>00390 <a name="l00391"></a>00391     text.setWidth(painter, scaledRect.width());<a name="l00392"></a>00392 <a name="l00393"></a>00393     <span class="comment">// QSimpleRichText is Qt::AlignTop by default</span><a name="l00394"></a>00394 <a name="l00395"></a>00395     <span class="keywordtype">int</span> y = scaledRect.y();<a name="l00396"></a>00396     <span class="keywordflow">if</span> (flags &amp; Qt::AlignBottom)<a name="l00397"></a>00397         y += (scaledRect.height() - text.height());<a name="l00398"></a>00398     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; Qt::AlignVCenter)<a name="l00399"></a>00399         y += (scaledRect.height() - text.height())/2;<a name="l00400"></a>00400 <a name="l00401"></a>00401     text.draw(painter, scaledRect.x(), y, scaledRect, cg);<a name="l00402"></a>00402 }<a name="l00403"></a>00403 <span class="preprocessor">#else</span><a name="l00404"></a><a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">00404</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">QwtPainter::drawSimpleRichText</a>(QPainter *painter, <span class="keyword">const</span> QRect &amp;rect,<a name="l00405"></a>00405     <span class="keywordtype">int</span> flags, QTextDocument &amp;text)<a name="l00406"></a>00406 {<a name="l00407"></a>00407     <span class="keyword">const</span> QRect scaledRect = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(rect, painter);<a name="l00408"></a>00408     text.setPageSize(QSize(scaledRect.width(), QWIDGETSIZE_MAX));<a name="l00409"></a>00409 <a name="l00410"></a>00410     QAbstractTextDocumentLayout* layout = text.documentLayout();<a name="l00411"></a>00411 <a name="l00412"></a>00412     <span class="keyword">const</span> <span class="keywordtype">int</span> height = qRound(layout-&gt;documentSize().height());<a name="l00413"></a>00413     <span class="keywordtype">int</span> y = scaledRect.y();<a name="l00414"></a>00414     <span class="keywordflow">if</span> (flags &amp; Qt::AlignBottom)<a name="l00415"></a>00415         y += (scaledRect.height() - height);<a name="l00416"></a>00416     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags &amp; Qt::AlignVCenter)<a name="l00417"></a>00417         y += (scaledRect.height() - height)/2;<a name="l00418"></a>00418 <a name="l00419"></a>00419     QAbstractTextDocumentLayout::PaintContext context;<a name="l00420"></a>00420     context.palette.setColor(QPalette::Text, painter-&gt;pen().color());<a name="l00421"></a>00421 <a name="l00422"></a>00422     painter-&gt;save();<a name="l00423"></a>00423 <a name="l00424"></a>00424     painter-&gt;translate(scaledRect.x(), scaledRect.y());<a name="l00425"></a>00425     layout-&gt;draw(painter, context);<a name="l00426"></a>00426 <a name="l00427"></a>00427     painter-&gt;restore();<a name="l00428"></a>00428 }<a name="l00429"></a>00429 <span class="preprocessor">#endif</span><a name="l00430"></a>00430 <span class="preprocessor"></span><a name="l00431"></a>00431 <span class="preprocessor">#endif // !QT_NO_RICHTEXT</span><a name="l00432"></a>00432 <span class="preprocessor"></span><a name="l00433"></a>00433 <a name="l00437"></a><a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">00437</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(QPainter *painter, <span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2)<a name="l00438"></a>00438 {<a name="l00439"></a>00439     <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00440"></a>00440 <a name="l00441"></a>00441     <span class="keywordflow">if</span> ( deviceClipping &amp;&amp; <a name="l00442"></a>00442         !(deviceClipRect().contains(x1, y1) &amp;&amp; deviceClipRect().contains(x2, y2)) )<a name="l00443"></a>00443     {<a name="l00444"></a>00444         QwtPolygon pa(2);<a name="l00445"></a>00445         pa.setPoint(0, x1, y1);<a name="l00446"></a>00446         pa.setPoint(1, x2, y2);<a name="l00447"></a>00447         <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">drawPolyline</a>(painter, pa);<a name="l00448"></a>00448         <span class="keywordflow">return</span>;<a name="l00449"></a>00449     }<a name="l00450"></a>00450 <a name="l00451"></a>00451     <span class="keywordflow">if</span> ( d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#35701bcf62dea107f4211fcc0adbf35e">isIdentity</a>() )<a name="l00452"></a>00452     {<a name="l00453"></a>00453 #<span class="keywordflow">if</span> QT_VERSION &gt;= 0x030200 &amp;&amp; QT_VERSION &lt; 0x040000<a name="l00454"></a>00454         <span class="keywordflow">if</span> ( !painter-&gt;device()-&gt;isExtDev() )<a name="l00455"></a>00455 #endif<a name="l00456"></a>00456         {<a name="l00457"></a>00457             painter-&gt;drawLine(x1, y1, x2, y2);<a name="l00458"></a>00458             <span class="keywordflow">return</span>;<a name="l00459"></a>00459         }<a name="l00460"></a>00460     }<a name="l00461"></a>00461 <a name="l00462"></a>00462     <span class="keyword">const</span> QPoint p1 = d_metricsMap.layoutToDevice(QPoint(x1, y1));<a name="l00463"></a>00463     <span class="keyword">const</span> QPoint p2 = d_metricsMap.layoutToDevice(QPoint(x2, y2));<a name="l00464"></a>00464 <a name="l00465"></a>00465 <span class="preprocessor">#if QT_VERSION &gt;= 0x030200 &amp;&amp; QT_VERSION &lt; 0x040000</span><a name="l00466"></a>00466 <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( painter-&gt;device()-&gt;isExtDev() )<a name="l00467"></a>00467     {<a name="l00468"></a>00468         <span class="comment">// Strange: the postscript driver of QPrinter adds an offset </span><a name="l00469"></a>00469         <span class="comment">// of 0.5 to the start/endpoint when using drawLine, but not</span><a name="l00470"></a>00470         <span class="comment">// for lines painted with drawLineSegments.</span><a name="l00471"></a>00471 <a name="l00472"></a>00472         QwtPolygon pa(2);<a name="l00473"></a>00473         pa.setPoint(0, p1);<a name="l00474"></a>00474         pa.setPoint(1, p2);<a name="l00475"></a>00475         painter-&gt;drawLineSegments(pa);<a name="l00476"></a>00476     }<a name="l00477"></a>00477     <span class="keywordflow">else</span><a name="l00478"></a>00478         painter-&gt;drawLine(p1, p2);<a name="l00479"></a>00479 <span class="preprocessor">#else</span><a name="l00480"></a>00480 <span class="preprocessor"></span>    painter-&gt;drawLine(p1, p2);<a name="l00481"></a>00481 <span class="preprocessor">#endif</span><a name="l00482"></a>00482 <span class="preprocessor"></span>}<a name="l00483"></a>00483 <a name="l00487"></a><a class="code" href="class_qwt_painter.html#ea6a68bdfab18525b39f18413fc41950">00487</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#ea6a68bdfab18525b39f18413fc41950">QwtPainter::drawPolygon</a>(QPainter *painter, <span class="keyword">const</span> QwtPolygon &amp;pa)<a name="l00488"></a>00488 {<a name="l00489"></a>00489     <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00490"></a>00490 <a name="l00491"></a>00491     QwtPolygon cpa = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(pa);<a name="l00492"></a>00492     <span class="keywordflow">if</span> ( deviceClipping )<a name="l00493"></a>00493     {<a name="l00494"></a>00494 <span class="preprocessor">#ifdef __GNUC__</span><a name="l00495"></a>00495 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00496"></a>00496 <span class="preprocessor"></span>        cpa = <a class="code" href="class_qwt_painter.html#241e86dde3636d8e25acc40a135dd054">clip</a>(cpa);<a name="l00497"></a>00497     }<a name="l00498"></a>00498     painter-&gt;drawPolygon(cpa);<a name="l00499"></a>00499 }<a name="l00500"></a>00500 <a name="l00504"></a><a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">00504</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">QwtPainter::drawPolyline</a>(QPainter *painter, <span class="keyword">const</span> QwtPolygon &amp;pa)<a name="l00505"></a>00505 {<a name="l00506"></a>00506     <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00507"></a>00507 <a name="l00508"></a>00508     QwtPolygon cpa = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(pa);<a name="l00509"></a>00509     <span class="keywordflow">if</span> ( deviceClipping )<a name="l00510"></a>00510         cpa = <a class="code" href="class_qwt_painter.html#241e86dde3636d8e25acc40a135dd054">clip</a>(cpa);<a name="l00511"></a>00511     painter-&gt;drawPolyline(cpa);<a name="l00512"></a>00512 }<a name="l00513"></a>00513 <a name="l00518"></a><a class="code" href="class_qwt_painter.html#f75e34851777099b742910612e8e4b39">00518</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#f75e34851777099b742910612e8e4b39">QwtPainter::drawPoint</a>(QPainter *painter, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<a name="l00519"></a>00519 {<a name="l00520"></a>00520     <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00521"></a>00521 <a name="l00522"></a>00522     <span class="keyword">const</span> QPoint pos = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(QPoint(x, y));<a name="l00523"></a>00523 <a name="l00524"></a>00524     <span class="keywordflow">if</span> ( deviceClipping &amp;&amp; !deviceClipRect().contains(pos) )<a name="l00525"></a>00525         <span class="keywordflow">return</span>;<a name="l00526"></a>00526 <a name="l00527"></a>00527     painter-&gt;drawPoint(pos);<a name="l00528"></a>00528 }<a name="l00529"></a>00529 <a name="l00530"></a>00530 <span class="keywordtype">void</span> QwtPainter::drawColoredArc(QPainter *painter, <span class="keyword">const</span> QRect &amp;rect, <a name="l00531"></a>00531     <span class="keywordtype">int</span> peak, <span class="keywordtype">int</span> arc, <span class="keywordtype">int</span> interval, <span class="keyword">const</span> QColor &amp;c1, <span class="keyword">const</span> QColor &amp;c2)<a name="l00532"></a>00532 {<a name="l00533"></a>00533     <span class="keywordtype">int</span> h1, s1, v1;<a name="l00534"></a>00534     <span class="keywordtype">int</span> h2, s2, v2;<a name="l00535"></a>00535 <a name="l00536"></a>00536 <span class="preprocessor">#if QT_VERSION &lt; 0x040000</span><a name="l00537"></a>00537 <span class="preprocessor"></span>    c1.hsv(&amp;h1, &amp;s1, &amp;v1);<a name="l00538"></a>00538     c2.hsv(&amp;h2, &amp;s2, &amp;v2);<a name="l00539"></a>00539 <span class="preprocessor">#else</span><a name="l00540"></a>00540 <span class="preprocessor"></span>    c1.getHsv(&amp;h1, &amp;s1, &amp;v1);<a name="l00541"></a>00541     c2.getHsv(&amp;h2, &amp;s2, &amp;v2);<a name="l00542"></a>00542 <span class="preprocessor">#endif</span><a name="l00543"></a>00543 <span class="preprocessor"></span>    <a name="l00544"></a>00544     arc /= 2;<a name="l00545"></a>00545     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> angle = -arc; angle &lt; arc; angle += interval)<a name="l00546"></a>00546     {<a name="l00547"></a>00547         <span class="keywordtype">double</span> ratio;<a name="l00548"></a>00548         <span class="keywordflow">if</span> ( angle &gt;= 0 )

⌨️ 快捷键说明

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