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
)
參數
- g
型別:System.Drawing.Graphics
用來繪製的 Graphics (英文) 物件。
- stroke
型別:Microsoft.Ink.Stroke
要繪製的 Stroke 物件。
- da
型別:Microsoft.Ink.DrawingAttributes
要用於繪圖的 DrawingAttributes 屬性。如果指定了繪圖屬性,則會覆寫 Stroke 物件上的繪圖屬性。
備註
注意事項: |
---|
畫筆寬度會根據您使用 SetViewTransform 方法的方式適當調整。具體來說,畫筆寬度會乘以檢視轉換之行列式的平方根 (或據以調整)。
注意事項: |
---|
如果尚未明確設定畫筆寬度,則預設為 53。您必須將畫筆寬度乘以行列式的平方根,才能得出正確的週框方塊。週框方塊的高度和寬度會依這個數目的一半,朝各方向放大。 |
例如,試想畫筆寬度為 53,行列式的平方根為 50,而且週框方塊為 (0,0,1000,1000)。依據週框方塊朝各方向調整的畫筆寬度計算方式為 (53*50)/2,右邊和底部則會加一。這樣會產生週框方塊 (-1325,-1325,2326,2326)。
Renderer 物件會強制將檢視區和視窗原點設定為 0,0。任何現有的設定都會被儲存及還原,但不會被 Renderer 使用。若要執行捲動,請使用 Renderer 物件的 GetViewTransform 和 GetObjectTransform 方法。
範例
在這個範例中,會在與 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