Partager via


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.

Notes

ms569822.alert_note(fr-fr,VS.90).gifRemarque :

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.

ms569822.alert_note(fr-fr,VS.90).gifRemarque :

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.

ms569822.alert_security(fr-fr,VS.90).gifNote 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

Voir aussi

Référence

Renderer, classe

Membres Renderer

Draw, surcharge

Microsoft.Ink, espace de noms

Renderer.SetViewTransform

DrawingAttributes

Strokes

Stroke