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

📄 qpainter.html

📁 QT3的教程
💻 HTML
📖 第 1 页 / 共 5 页
字号:
构造绘制工具。
<p> 注意所有绘制工具的设置(setPen、setBrush等等)在当<a href="#begin">begin</a>()被调用时会被重新设置为默认值。
<p> <p>请参考<a href="#begin">begin</a>()和<a href="#end">end</a>()。

<h3 class=fn><a name="QPainter-2"></a>QPainter::QPainter ( const&nbsp;<a href="qpaintdevice.html">QPaintDevice</a>&nbsp;*&nbsp;pd, bool&nbsp;unclipped = FALSE )
</h3>
构造一个立即开始在绘制设备<em>pd</em>绘制的绘制工具。如果<em>unclipped</em>为真,依赖于底层图形系统,绘制工具将在绘制设备的子对象上绘制。
<p> 这个构造函数对短期的绘制工具是很方便的,例如,在一个<a href="qwidget.html#paintEvent">绘制事件</a>中并且也该被立即使用。构造函数为你调用<a href="#begin">begin</a>()并且QPainter的析构函数会自动调用<a href="#end">end</a>()。
<p> 这是使用begin()和end()的实例:
<pre>
        void MyWidget::paintEvent( <a href="qpaintevent.html">QPaintEvent</a> * )
        {
            QPainter p;
            p.<a href="#begin">begin</a>( this );
            p.<a href="#drawLine">drawLine</a>( ... );  // 绘制代码
            p.<a href="#end">end</a>();
        }
    </pre>
 
<p> 使用这个构造函数的相同实例:
<pre>
        void MyWidget::paintEvent( <a href="qpaintevent.html">QPaintEvent</a> * )
        {
            QPainter p( this );
            p.<a href="#drawLine">drawLine</a>( ... );  // 绘制代码
        }
    </pre>
 
<p> <p>请参考<a href="#begin">begin</a>()和<a href="#end">end</a>()。

<h3 class=fn><a name="QPainter-3"></a>QPainter::QPainter ( const&nbsp;<a href="qpaintdevice.html">QPaintDevice</a>&nbsp;*&nbsp;pd, const&nbsp;<a href="qwidget.html">QWidget</a>&nbsp;*&nbsp;copyAttributes, bool&nbsp;unclipped = FALSE )
</h3>
构造一个立即开始在绘制设备<em>pd</em>绘制的绘制工具,默认参数来自于<em>copyAttributes</em>。如果<em>unclipped</em>为真,依赖于底层图形系统,绘制工具将在绘制设备的子对象上绘制(尽管这个不是在所有平台上都被支持)。
<p> <p>请参考<a href="#begin">begin</a>()。

<h3 class=fn><a name="~QPainter"></a>QPainter::~QPainter ()
</h3>
销毁绘制工具。

<h3 class=fn>const&nbsp;<a href="qcolor.html">QColor</a>&nbsp;&amp; <a name="backgroundColor"></a>QPainter::backgroundColor () const
</h3>
<p> 返回当前背景色。
<p> <p>请参考<a href="#setBackgroundColor">setBackgroundColor</a>()和<a href="qcolor.html">QColor</a>。

<h3 class=fn><a href="qt.html#BGMode-enum">BGMode</a> <a name="backgroundMode"></a>QPainter::backgroundMode () const
</h3>
<p> 返回当前背景模式。
<p> <p>请参考<a href="#setBackgroundMode">setBackgroundMode</a>()和<a href="qt.html#BGMode-enum">BGMode</a>。

<h3 class=fn>bool <a name="begin"></a>QPainter::begin ( const&nbsp;<a href="qpaintdevice.html">QPaintDevice</a>&nbsp;*&nbsp;pd, bool&nbsp;unclipped = FALSE )
</h3>
开始在绘制设备<em>pd</em>上绘制并且如果成功返回真,否则返回假。如果<em>unclipped</em>为真,绘制在绘制设备的边缘将不会被裁剪(尽管这不是在所有平台上被支持)。
<p> 发生的错误是严重的问题,例如这些:
<p> <pre>
        p-&gt;begin( 0 ); // 不可能——绘制设备不能为0

        <a href="qpixmap.html">QPixmap</a> pm( 0, 0 );
        p-&gt;begin( pm ); // 不可能——pm.<a href="qpixmap.html#isNull">isNull</a>();

        p-&gt;begin( myWidget );
        p2-&gt;begin( myWidget ); // 不可能——在同一时间只能有一个绘制工具
    </pre>
 
<p> 注意绝大部分时间,你可以使用一个构造函数来代替<a href="#begin">begin</a>(),并且<a href="#end">end</a>()会在析构函数中被自动完成。
<p> <b>警告:</b>在同一时间绘制设备上只能有一个绘制工具。
<p> <p>请参考<a href="#end">end</a>()和<a href="#flush">flush</a>()。
<p>实例:<a href="aclock-example.html#x1201">aclock/aclock.cpp</a>、<a href="simple-application-example.html#x1525">application/application.cpp</a>、<a href="desktop-example.html#x1771">desktop/desktop.cpp</a>、<a href="hello-example.html#x1599">hello/hello.cpp</a>、<a href="picture-example.html#x79">picture/picture.cpp</a>、<a href="tutorial1-10.html#x2335">t10/cannon.cpp</a>和<a href="xform-example.html#x1432">xform/xform.cpp</a>。

<h3 class=fn>bool <a name="begin-2"></a>QPainter::begin ( const&nbsp;<a href="qpaintdevice.html">QPaintDevice</a>&nbsp;*&nbsp;pd, const&nbsp;<a href="qwidget.html">QWidget</a>&nbsp;*&nbsp;copyAttributes, bool&nbsp;unclipped = FALSE )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 这个版本在绘制设备<em>pd</em>上打开绘制工具并且从<em>copyAttributes</em>设置初始画笔、背景颜色和字体,当<em>unclipped</em>为真,在绘制设备的子对象上进行绘制。这等于:
<p> <pre>
        QPainter p;
        p.<a href="#begin">begin</a>( pd );
        p.<a href="#setPen">setPen</a>( copyAttributes-&gt;foregroundColor() );
        p.<a href="#setBackgroundColor">setBackgroundColor</a>( copyAttributes-&gt;backgroundColor() );
        p.<a href="#setFont">setFont</a>( copyAttributes-&gt;font() );
    </pre>
 
<p> 这个开始函数便于双重缓冲。当你在一个像素映射上绘制,而不是直接在窗口部件上绘制(稍后用bitBlt把这个像素映射放到窗口部件中),你将需要设置窗口部件的字体等等。这个函数正确地做到了这些。
<p> 实例:
<pre>
        void MyWidget::paintEvent( <a href="qpaintevent.html">QPaintEvent</a> * )
        {
            <a href="qpixmap.html">QPixmap</a> pm(size());
            QPainter p;
            p.<a href="#begin">begin</a>(&amp;pm, this);
            // ……绘制操作可能有闪烁……
            p.<a href="#end">end</a>();
            <a href="qpaintdevice.html#bitBlt-2">bitBlt</a>(this, 0, 0, &amp;pm);
        }
    </pre>
 
<p> <p>请参考<a href="#end">end</a>()。

<h3 class=fn><a href="qrect.html">QRect</a> <a name="boundingRect"></a>QPainter::boundingRect ( int&nbsp;x, int&nbsp;y, int&nbsp;w, int&nbsp;h, int&nbsp;flags, const&nbsp;<a href="qstring.html">QString</a>&nbsp;&amp;, int&nbsp;len = -1, QTextParag&nbsp;**&nbsp;intern = 0 )
</h3>
<p> 返回相对应的<a href="#drawText">drawText</a>()函数所要打印的对齐的文本的边界矩形,如果<em>len</em>>-1,使用字符串的<em>len</em>个字符,或者如果<em>len</em>为-1,使用整个字符串。绘制已经相应的边界矩形,由点<em>(x, y)</em>以及宽<em>w</em>和高<em>h</em>来约束。
<p> <em>flags</em>参数是下列标记的位或运算结果:
<center><table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#a2c511"> <th valign="top">标记 <th valign="top">意义
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignAuto</a> <td valign="top">根据语言对齐,通常是左。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignLeft</a> <td valign="top">左对齐。
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignRight</a> <td valign="top">右对齐。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignHCenter</a> <td valign="top">水平中间对齐。
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignTop</a> <td valign="top">上对齐。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignBottom</a> <td valign="top">下对齐。
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignVCenter</a> <td valign="top">垂直中间对齐。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#AlignmentFlags-enum">AlignCenter</a> <td valign="top">(==<a href="qt.html#AlignmentFlags-enum">AlignHCenter</a> | <a href="qt.html#AlignmentFlags-enum">AlignVCenter</a>)。
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#TextFlags-enum">SingleLine</a> <td valign="top">在文本中忽略换行符。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#TextFlags-enum">ExpandTabs</a> <td valign="top">扩展tab。
<tr bgcolor="#f0f0f0"> <td valign="top"><a href="qt.html#TextFlags-enum">ShowPrefix</a> <td valign="top">把“&x”解释为“<u>x</u>”。
<tr bgcolor="#d0d0d0"> <td valign="top"><a href="qt.html#TextFlags-enum">WordBreak</a> <td valign="top">打断文本来适应矩形。
</table></center>
<p> 水平对齐默认为<a href="qt.html#AlignmentFlags-enum">AlignLeft</a>并且垂直对齐默认为<a href="qt.html#AlignmentFlags-enum">AlignTop</a>。
<p> 如果几种同一方向上(水平或垂直)的对齐标记一起使用,对齐结果是不确定的。
<p> <em>intern</em>参数不应该被使用。
<p> <p>请参考<a href="qt.html#TextFlags-enum">Qt::TextFlags</a>。

<h3 class=fn><a href="qrect.html">QRect</a> <a name="boundingRect-2"></a>QPainter::boundingRect ( const&nbsp;<a href="qrect.html">QRect</a>&nbsp;&amp;&nbsp;r, int&nbsp;flags, const&nbsp;<a href="qstring.html">QString</a>&nbsp;&amp;&nbsp;str, int&nbsp;len = -1, QTextParag&nbsp;**&nbsp;internal = 0 )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 返回相对应的<a href="#drawText">drawText</a>()函数所要打印的对齐的文本的边界矩形,如果<em>len</em>>-1,使用字符串的<em>len</em>个字符,或者如果<em>len</em>为-1,使用整个字符串。绘制已经相应的边界矩形,由矩形<em>r</em>来约束。
<p> <em>intern</em>参数不应该被使用。
<p> <p>请参考<a href="#drawText">drawText</a>()、<a href="#fontMetrics">fontMetrics</a>()、<a href="qfontmetrics.html#boundingRect">QFontMetrics::boundingRect</a>()和<a href="qt.html#TextFlags-enum">Qt::TextFlags</a>。

<h3 class=fn>const&nbsp;<a href="qbrush.html">QBrush</a>&nbsp;&amp; <a name="brush"></a>QPainter::brush () const
</h3>
<p> 返回绘制工具的当前画刷。
<p> <p>请参考<a href="#setBrush">QPainter::setBrush</a>()。

⌨️ 快捷键说明

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