Renderer.Draw 方法 (IntPtr, Stroke)
在傳入本身控制代碼的裝置內容上繪製 Stroke 物件。
命名空間: Microsoft.Ink
組件: Microsoft.Ink (在 Microsoft.Ink.dll 中)
語法
'宣告
Public Sub Draw ( _
hdc As IntPtr, _
stroke As Stroke _
)
'用途
Dim instance As Renderer
Dim hdc As IntPtr
Dim stroke As Stroke
instance.Draw(hdc, stroke)
public void Draw(
IntPtr hdc,
Stroke stroke
)
public:
void Draw(
IntPtr hdc,
Stroke^ stroke
)
public void Draw(
IntPtr hdc,
Stroke stroke
)
public function Draw(
hdc : IntPtr,
stroke : Stroke
)
參數
- hdc
型別:System.IntPtr
要在其中繪製的裝置內容控制代碼。
- stroke
型別:Microsoft.Ink.Stroke
要繪製的 Stroke 物件。
備註
注意事項: |
---|
畫筆寬度會根據您使用 SetViewTransform 方法的方式適當調整。具體來說,畫筆寬度會乘以檢視轉換之行列式的平方根 (或據以調整)。
注意事項: |
---|
如果尚未明確設定畫筆寬度,則預設為 53。您必須將畫筆寬度乘以行列式的平方根,才能得出正確的週框方塊。週框方塊的高度和寬度會依這個數目的一半,朝各方向放大。 |
例如,試想畫筆寬度為 53,行列式的平方根為 50,而且週框方塊為 (0,0,1000,1000)。依據週框方塊朝各方向調整的畫筆寬度計算方式為 (53*50)/2,右邊和底部則會加一。這樣會產生週框方塊 (-1325,-1325,2326,2326)。
Renderer 物件會強制將檢視區和視窗原點設定為 0,0。任何現有的設定都會被儲存及還原,但不會被 Renderer 使用。若要執行捲動,請使用 Renderer 物件的 GetViewTransform 和 GetObjectTransform 方法。
安全性注意事項: |
---|
如果在部分信任的情況下使用,除了 InkCollector 所需的權限之外,這個方法還需要 SecurityPermissionFlag.UnmanagedCode (英文) 權限。如需安全性問題和部分信任的詳細資訊,請參閱Security and Trust。 |
範例
在這個範例中,會在 Ink 物件中建立 Stroke 物件。筆劃的形狀是英文字母 N。在建立後,筆劃會顯示在與 InkOverlay 物件相關聯的 Panel (英文) 以及另一個面板上。這個動作的完成是藉由呼叫兩次 Draw 方法,將另一個裝置內容控制代碼值傳遞至 hdc 參數。
Using g1 As Graphics = mInkOverlay.AttachedControl.CreateGraphics()
' create the stroke
Dim strokePoints() As Point = _
{ _
New Point(200, 4000), _
New Point(200, 200), _
New Point(3000, 4000), _
New Point(3000, 200) _
}
Dim oneStroke As Stroke = mInkOverlay.Ink.CreateStroke(strokePoints)
' draw the stroke on the control attached to InkOverlay
' get the handle to the device context
Dim hdc1 As IntPtr = g1.GetHdc()
' draw the stroke
mInkOverlay.Renderer.Draw(hdc1, oneStroke)
' release the handle to the device context
g1.ReleaseHdc(hdc1)
' now draw the stroke on another control also
Using g2 As Graphics = Me.panelForDraw.CreateGraphics()
' get the handle to the device context
Dim hdc2 As IntPtr = g2.GetHdc()
' draw the stroke
mInkOverlay.Renderer.Draw(hdc2, oneStroke)
' release the handle to the device context
g2.ReleaseHdc(hdc1)
End Using
End Using
using (Graphics g1 = mInkOverlay.AttachedControl.CreateGraphics())
{
// create the stroke
Point[] strokePoints = new Point[4]
{
new Point(200, 4000),
new Point(200, 200),
new Point(3000, 4000),
new Point(3000, 200)
};
Stroke oneStroke = mInkOverlay.Ink.CreateStroke(strokePoints);
// draw the stroke on the control attached to InkOverlay
// get the handle to the device context
IntPtr hdc1 = g1.GetHdc();
// draw the stroke
mInkOverlay.Renderer.Draw(hdc1, oneStroke);
// release the handle to the device context
g1.ReleaseHdc(hdc1);
// now draw the stroke on another control also
using (Graphics g2 = this.panelForDraw.CreateGraphics())
{
// get the handle to the device context
IntPtr hdc2 = g2.GetHdc();
// draw the stroke
mInkOverlay.Renderer.Draw(hdc2, oneStroke);
// release the handle to the device context
g2.ReleaseHdc(hdc1);
}
}
平台
Windows Vista
.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求。
版本資訊
.NET Framework
支援版本:3.0