Renderer.Draw-Methode (Graphics, Stroke, DrawingAttributes)
Zeichnet das Stroke-Objekt mit DrawingAttributes auf der angegebenen Graphics-Oberfläche.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Sub Draw ( _
g As Graphics, _
stroke As Stroke, _
da As DrawingAttributes _
)
'Usage
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
)
Parameter
- g
Typ: System.Drawing.Graphics
Das Graphics-Objekt, mit dem gezeichnet werden soll.
- stroke
Typ: Microsoft.Ink.Stroke
Das zu zeichnende Stroke-Objekt.
- da
Typ: Microsoft.Ink.DrawingAttributes
Die DrawingAttributes-Eigenschaft, die für die Zeichnung verwendet werden soll. Wenn Zeichnungsattribute angegeben sind, überschreiben diese die Zeichnungsattribute des Stroke-Objekts.
Hinweise
Hinweis
Verwenden Sie nach Möglichkeit statt einer Überladung, die ein IntPtr akzeptiert, die entsprechende Überladung, die ein Graphics-Objekt akzeptiert.
Die Stiftbreite wird entsprechend der Verwendung der SetViewTransform-Methode angepasst. Insbesondere wird die Stiftbreite mit der Quadratwurzel der Determinanten der Ansichtstransformation multipliziert (bzw. skaliert).
Hinweis
Wenn die Stiftbreite nicht explizit festgelegt wurde, beträgt sie standardmäßig 53. Sie müssen die Stiftbreite mit der Quadratwurzel der Determinanten multiplizieren, um das ordnungsgemäße umgebende Rechteck zu erhalten. Die Höhe und Breite des umgebenden Rechtecks werden in jede Richtung um die Hälfte dieses Betrags erweitert.
Angenommen, die Stiftbreite beträgt 53, die Quadratwurzel der Determinante ist 50, und das umgebende Rechteck ist (0,0,1000,1000). Die Anpassung der Stiftbreite an das umgebende Rechteck in jede Richtung wird als (53*50)/2 berechnet, und die rechte und untere Seite werden um eins erhöht. Dies führt zu dem gerenderten umgebenden Rechteck (-1325, -1325, 2326, 2326).
Das Renderer-Objekt erzwingt, dass der Ursprung von Viewports und Fenstern auf 0,0 festgelegt wird. Alle vorhandenen Einstellungen werden gespeichert und wiederhergestellt, jedoch nicht vom Renderer verwendet. Um einen Bildlauf auszuführen, verwenden Sie die GetViewTransform-Methode und die GetObjectTransform-Methode des Renderer-Objekts.
Beispiele
In diesem Beispiel wird die gesamte Strokes-Auflistung aus einem Ink-Objekt, das einem InkOverlay-Objekt zugeordnet ist, in einem Panel angezeigt, das sich von dem dem InkOverlay-Objekt zugeordneten unterscheidet.
Beim Anzeigen der Stroke-Objekte im Alternativbereich wird außerdem ein geändertes DrawingAttributes-Objekt verwendet. Änderungen werden angewendet, die die Farbe des Strichs invertieren und dessen Breite verdoppeln. Das geänderte DrawingAttributes-Objekt wird anschließend über den da-Parameter an die Draw-Methode übergeben. Dies wirkt sich nicht auf die DrawingAttributes der ursprünglichen Striche aus.
' 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);
}
}
}
Plattformen
Windows Vista
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen
.NET Framework
Unterstützt in: 3.0