InkOverlay.Draw 方法
设置一个矩形,将在其中重新绘制 InkOverlay 对象中的墨迹。
命名空间: Microsoft.Ink
程序集: Microsoft.Ink(在 Microsoft.Ink.dll 中)
语法
声明
Public Sub Draw ( _
rDrawRect As Rectangle _
)
用法
Dim instance As InkOverlay
Dim rDrawRect As Rectangle
instance.Draw(rDrawRect)
public void Draw(
Rectangle rDrawRect
)
public:
void Draw(
Rectangle rDrawRect
)
public void Draw(
Rectangle rDrawRect
)
public function Draw(
rDrawRect : Rectangle
)
参数
- rDrawRect
类型:System.Drawing.Rectangle
要在其中重新绘制墨迹的矩形(以像素坐标表示)。
备注
当 rDrawRect 参数为 nullnull 引用(在 Visual Basic 中为 Nothing)(在 Microsoft Visual Basic .NET 中为 Nothing)时,将重新绘制整个窗口。
此方法非常适用于重新绘制已通过编程方式更改的笔画。也可以调用 Control.Invalidate 方法,但这样做会导致重新绘制 InkOverlay 对象的所有笔画。还可以为实现此目的调用 Renderer.Draw 方法,但是 Renderer 对象无法以选中状态绘制任何笔画,因为该对象不了解哪些笔画在 Selection 集合中。
备注
若要使绘制得以进行,必须将 AutoRedraw 属性设置为 true。
示例
此 C# 示例是一个方法,该方法更改 Strokes 集合中所有属于 Ink 对象(该对象与一个 InkOverlay 对象 theInkOverlay 关联)的笔画的颜色。对 Stroke 对象的 DrawingAttributes 属性的更改不是自动执行且立即可见的。可以对与 theInkOverlay 关联的控件调用 Invalidate 或 Refresh 方法,但这样做会导致重新绘制 theInkOverlay 中的所有 Stroke 对象。若要提高性能,请对 Strokes 集合的边框使用 Draw 方法。请注意,这意味着将该边框从墨迹空间 坐标转换为像素坐标。
private void ChangeColor(Strokes theStrokes, Color newColor)
{
// Change the color of theStrokes
foreach (Stroke stroke in theStrokes)
{
stroke.DrawingAttributes.Color = newColor;
}
// Convert bounding box to pixel coordinates
Graphics g = CreateGraphics();
Rectangle strokesBounds = theStrokes.GetBoundingBox();
Point topLeft = strokesBounds.Location;
Point bottomRight = strokesBounds.Location + strokesBounds.Size;
theInkOverlay.Renderer.InkSpaceToPixel(g, ref topLeft);
theInkOverlay.Renderer.InkSpaceToPixel(g, ref bottomRight);
g.Dispose()
strokesBounds = new Rectangle(topLeft,
new Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y));
// Redraw the strokes
theInkOverlay.Draw(strokesBounds);
}
此 Visual Basic .NET 示例是一个方法,该方法更改 Strokes 集合中所有属于 Ink 对象(该对象与一个 InkOverlay 对象 theInkOverlay 关联)的笔画的颜色。对 Stroke 对象的 DrawingAttributes 属性的更改不是自动执行且立即可见的。可以对与 theInkOverlay 关联的控件调用 Invalidate 或 Refresh 方法,但这样做会导致重新绘制 theInkOverlay 中的所有 Stroke 对象。若要提高性能,请对 Strokes 集合的边框使用 Draw 方法。请注意,这意味着将该边框从墨迹空间 坐标转换为像素坐标。
Private Sub ChangeColor(ByVal theStrokes As Strokes, ByVal newColor As Color)
' Change the color of theStrokes
Dim theStroke As Stroke
For Each theStroke In theStrokes
theStroke.DrawingAttributes.Color = newColor
Next
'Convert bounding box to pixel coordinates
Dim g As Graphics = CreateGraphics()
Dim strokesBounds As Rectangle = theStrokes.GetBoundingBox()
Dim topLeft As Point = strokesBounds.Location
Dim bottomRight As Point = New Point(strokesBounds.Right, strokesBounds.Bottom)
theInkOverlay.Renderer.InkSpaceToPixel(g, topLeft)
theInkOverlay.Renderer.InkSpaceToPixel(g, bottomRight)
g.Dispose()
strokesBounds = New Rectangle(topLeft, _
New Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y))
'Redraw the strokes
theInkOverlay.Draw(strokesBounds)
End Sub
平台
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
版本信息
.NET Framework
受以下版本支持:3.0