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
    要在其上进行绘制的设备上下文的句柄。

备注

备注

请尽可能使用接受 Graphics 对象的合适重载,而不是接受 IntPtr 的重载。

将基于使用 SetViewTransform 方法的方式相应地调整笔的宽度。具体而言,笔宽度将乘以(或调整为)视图变换的行列式的平方根。

备注

如果未显式设置笔宽度,则默认值为 53。只有将笔宽度乘以行列式的平方根才能得到正确的边界框。边界框的高度和宽度在每个方向上扩展该数量的一半。

例如,如果笔宽度为 53,行列式的平方根为 50,边界框为 (0, 0, 1000, 1000)。根据笔宽度,边界框在每个方向上的调整计算方法为 (53 * 50) / 2,右侧和下方增加一个单位。这样,将呈现出边界框 (-1325,-1325,2326,2326)。

Renderer 对象将视区和窗口原点强制到 0,0。将保存和还原任何现有设置,但 Renderer 不使用这些设置。若要执行滚动,请使用 Renderer 对象的 GetViewTransformGetObjectTransform 方法。

ms569824.alert_security(zh-cn,VS.90).gif安全说明:

如果在部分信任环境下使用,则除了 InkCollector 需要的权限以外,此方法还需要 SecurityPermissionFlag.UnmanagedCode 权限。有关安全问题和部分信任的更多信息,请参见Security and Trust

示例

在此示例中,在 Ink 对象中创建一个 Stroke 对象。笔画 的形状为英语字母 N。笔画 在创建后立即显示在与 InkOverlay 对象关联的 Panel 上以及另一个面板上。要完成该操作,需要将不同设备上下文句柄值传递给 hdc 参数,分别调用 Draw 方法两次。

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

另请参见

参考

Renderer 类

Renderer 成员

Draw 重载

Microsoft.Ink 命名空间

Renderer.SetViewTransform

DrawingAttributes

Strokes

Stroke