共用方式為


Renderer.Draw 方法 (Graphics, Stroke, DrawingAttributes)

DrawingAttributes 在指定的 Graphics (英文) 介面上繪製 Stroke 物件。

命名空間:  Microsoft.Ink
組件:  Microsoft.Ink (在 Microsoft.Ink.dll 中)

語法

'宣告
Public Sub Draw ( _
    g As Graphics, _
    stroke As Stroke, _
    da As DrawingAttributes _
)
'用途
Dim instance As Renderer
Dim g As Graphics
Dim stroke As Stroke
Dim da As DrawingAttributes

instance.Draw(g, stroke, da)
public void Draw(
    Graphics g,
    Stroke stroke,
    DrawingAttributes da
)
public:
void Draw(
    Graphics^ g, 
    Stroke^ stroke, 
    DrawingAttributes^ da
)
public void Draw(
    Graphics g,
    Stroke stroke,
    DrawingAttributes da
)
public function Draw(
    g : Graphics, 
    stroke : Stroke, 
    da : DrawingAttributes
)

參數

備註

ms569829.alert_note(zh-tw,VS.90).gif注意事項:

盡可能使用接受 Graphics (英文) 物件的適當多載,而不要使用接受 IntPtr (英文) 的多載。

畫筆寬度會根據您使用 SetViewTransform 方法的方式適當調整。具體來說,畫筆寬度會乘以檢視轉換之行列式的平方根 (或據以調整)。

ms569829.alert_note(zh-tw,VS.90).gif注意事項:

如果尚未明確設定畫筆寬度,則預設為 53。您必須將畫筆寬度乘以行列式的平方根,才能得出正確的週框方塊。週框方塊的高度和寬度會依這個數目的一半,朝各方向放大。

例如,試想畫筆寬度為 53,行列式的平方根為 50,而且週框方塊為 (0,0,1000,1000)。依據週框方塊朝各方向調整的畫筆寬度計算方式為 (53*50)/2,右邊和底部則會加一。這樣會產生週框方塊 (-1325,-1325,2326,2326)。

Renderer 物件會強制將檢視區和視窗原點設定為 0,0。任何現有的設定都會被儲存及還原,但不會被 Renderer 使用。若要執行捲動,請使用 Renderer 物件的 GetViewTransformGetObjectTransform 方法。

範例

在這個範例中,會在與 InkOverlay 物件本身無關的 Panel (英文) 上,顯示與 InkOverlay 物件相關聯之 Ink 物件的完整 Strokes 集合。

此外,在替代面板上顯示 Stroke 物件時,會使用修改過的 DrawingAttributes 物件。所套用的修改包含反轉筆劃的色彩,以及筆劃寬度放大兩倍。然後,會透過 da 參數將修改過的 DrawingAttributes 物件傳遞至 Draw 方法。這不會影響原始筆劃的 DrawingAttributes

' Access to the Ink.Strokes property returns a copy of the Strokes object.
' This copy must be implicitly (via using statement) or explicitly
' disposed of in order to avoid a memory leak.
Using allStrokes As Strokes = mInkOverlay.Ink.Strokes
    ' get a graphics object for another panel
    Using g As Graphics = Me.panelForDraw.CreateGraphics()
        ' get a Renderer object. We could have used
        ' mInkOverlay.Renderer, this is another way
        Dim R As Renderer = New Renderer()
        ' traverse the stroke collection
        For Each oneStroke As Stroke In allStrokes
            Dim da As DrawingAttributes = oneStroke.DrawingAttributes.Clone()
            ' invert the stroke color
            Dim cR As Byte = Not da.Color.R
            Dim cG As Byte = Not da.Color.G
            Dim cB As Byte = Not da.Color.B
            da.Color = Color.FromArgb(da.Color.A, cR, cG, cB)
            ' double the stroke width
            da.Width *= 2
            ' draw the stroke
            R.Draw(g, oneStroke, da)
        Next
    End Using
End Using
// Access to the Ink.Strokes property returns a copy of the Strokes object.
// This copy must be implicitly (via using statement) or explicitly
// disposed of in order to avoid a memory leak.
using (Strokes allStrokes = mInkOverlay.Ink.Strokes)
{
    // get a graphics object for another panel
    using (Graphics g = this.panelForDraw.CreateGraphics())
    {
        // get a Renderer object. We could have used
        // mInkOverlay.Renderer, this is another way
        Renderer R = new Renderer();
        // traverse the stroke collection
        foreach (Stroke oneStroke in allStrokes)
        {
            DrawingAttributes da = oneStroke.DrawingAttributes.Clone();
            // invert the stroke color
            byte cR = (byte)~(da.Color.R);
            byte cG = (byte)~(da.Color.G);
            byte cB = (byte)~(da.Color.B);
            da.Color = Color.FromArgb(da.Color.A, cR, cG, cB);
            // double the stroke width
            da.Width *= 2;
            // draw the stroke
            R.Draw(g, oneStroke, da);
        }
    }
}

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

版本資訊

.NET Framework

支援版本:3.0

請參閱

參考

Renderer 類別

Renderer 成員

Draw 多載

Microsoft.Ink 命名空間

Renderer.SetViewTransform

DrawingAttributes

Strokes

Stroke