Renderer.Draw, méthode (IntPtr, Stroke, DrawingAttributes)
Mise à jour : November 2007
Dessine l'objet Stroke, avec le DrawingAttributes, sur le contexte de périphérique dont le handle est passé.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
<UIPermissionAttribute(SecurityAction.Demand, Window := UIPermissionWindow.SafeTopLevelWindows)> _
<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode := True)> _
<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name := "FullTrust")> _
Public Sub Draw ( _
hdc As IntPtr, _
stroke As Stroke, _
da As DrawingAttributes _
)
'Utilisation
Dim instance As Renderer
Dim hdc As IntPtr
Dim stroke As Stroke
Dim da As DrawingAttributes
instance.Draw(hdc, stroke, da)
[UIPermissionAttribute(SecurityAction.Demand, Window = UIPermissionWindow.SafeTopLevelWindows)]
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public void Draw(
IntPtr hdc,
Stroke stroke,
DrawingAttributes da
)
[UIPermissionAttribute(SecurityAction::Demand, Window = UIPermissionWindow::SafeTopLevelWindows)]
[SecurityPermissionAttribute(SecurityAction::Demand, UnmanagedCode = true)]
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")]
public:
void Draw(
IntPtr hdc,
Stroke^ stroke,
DrawingAttributes^ da
)
/** @attribute UIPermissionAttribute(SecurityAction.Demand, Window = UIPermissionWindow.SafeTopLevelWindows) */
/** @attribute SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true) */
/** @attribute PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust") */
public void Draw(
IntPtr hdc,
Stroke stroke,
DrawingAttributes da
)
public function Draw(
hdc : IntPtr,
stroke : Stroke,
da : DrawingAttributes
)
Paramètres
- hdc
Type : System.IntPtr
Handle du contexte de périphérique sur lequel dessiner.
- stroke
Type : Microsoft.Ink.Stroke
Objet Stroke à dessiner.
- da
Type : Microsoft.Ink.DrawingAttributes
Propriété DrawingAttributes à utiliser pour le dessin. Si les attributs de dessin sont spécifiés, ils se substituent aux attributs de dessin de l'objet Stroke.
Notes
Remarque : |
---|
Si possible, utilisez la surcharge appropriée qui accepte un objet Graphics (page pouvant être en anglais) plutôt que celle qui accepte un IntPtr (page pouvant être en anglais). |
La largeur du stylet est ajustée en fonction de la façon dont vous utilisez la méthode SetViewTransform. Spécifiquement, la largeur du stylet est multipliée (ou a mise à l'échelle) par la racine carrée du déterminant de la transformation d'affichage.
Remarque : |
---|
Si vous n'avez pas explicitement affecté de valeur à la largeur du stylet, la largeur par défaut est 53. Vous devez multiplier la largeur du stylet par la racine carrée du déterminant pour obtenir le cadre englobant approprié. La hauteur et la largeur du cadre englobant sont augmentées de la moitié de cette valeur dans chaque direction. |
Par exemple, si la largeur du stylet est 53, la racine carrée du déterminant est 50 et le cadre englobant est (0, 0, 1000, 1000). Le réglage de la largeur du stylet au cadre englobant dans chaque direction est calculé de la façon suivante : (53 * 50) / 2 . Le côté droit et le bas sont incrémentés d'une unité. Un cadre englobant rendu de (-1325, -1325, 2326, 2326) est créé.
L'objet Renderer force l'affectation de la valeur 0,0 pour les origines des fenêtres d'affichage. Tous les paramètres existants sont enregistrés et restaurés, mais ils ne sont pas utilisés par le Renderer. Pour procéder au défilement, utilisez les méthodes GetViewTransform et GetObjectTransform de l'objet Renderer.
Note de sécurité : |
---|
Lors de l'utilisation en situation de confiance partielle, cette méthode requiert l'autorisation SecurityPermissionFlag.UnmanagedCode (page pouvant être en anglais), en plus des autorisations requises par InkCollector. Pour plus d'informations sur les problèmes de sécurité et la confiance partielle, consultez Security and Trust. |
Exemples
Dans cet exemple, l'ensemble de la collection Strokes d'un objet Ink associé à un objet InkOverlay est affichée sur un Panel (page pouvant être en anglais), différent de celui associé à l'objet InkOverlay lui-même.
De plus, lors de l'affichage des objets Stroke dans l'autre panneau, un objet DrawingAttributes modifié est utilisé. Des modifications sont appliquées ; elles inversent la couleur du trait et doublent sa largeur. L'objet DrawingAttributes modifié est ensuite passé à la méthode Draw via le paramètre da. Cela n'affecte pas les DrawingAttributes des traits d'origine.
' 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()
' get the handle to the device context
Dim hdc As IntPtr = g.GetHdc()
' 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(hdc, oneStroke, da)
Next
' release the handle to the device context
g.ReleaseHdc(hdc)
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();
// get the handle to the device context
IntPtr hdc = g.GetHdc();
// 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(hdc, oneStroke, da);
}
// release the handle to the device context
g.ReleaseHdc(hdc);
}
}
Plateformes
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Informations de version
.NET Framework
Pris en charge dans : 3.0