2009-04-15 6 views
1

J'ai besoin de convertir de la WPF Media.Matrix à Windows Forms Drawing2D.Matrix et je ne les éléments suivants:Quelle est la meilleure façon de convertir entre un Media.Matrix à un Drawing2D.Matrix

public static System.Drawing.Drawing2D.Matrix ConvertToDrawing2DMatrix(Matrix matrix) 
    { 
    return new System.Drawing.Drawing2D.Matrix((float)matrix.M11, 
               (float)matrix.M12, 
               (float)matrix.M21, 
               (float)matrix.M22, 
               (float)matrix.OffsetX, 
               (float)matrix.OffsetY); 
    } 

et je me demandais si c'était la meilleure approche.

Répondre

0

Si votre code fonctionne bien alors je dirais que c'est probablement la meilleure méthode dans votre cas. J'ai regardé partout google en essayant de trouver un moyen de le faire et à part une bibliothèque de tiers, je n'arrivais pas à trouver un moyen.

0

Je dirais que c'est le meilleur moyen. La matrice System.Drawing est stockée dans la mémoire non gérée et la matrice WPF est une structure sur la pile gérée, de sorte que toute tricherie dans une copie de bloc nécessiterait un code non sécurisé pour très peu, voire aucune amélioration perf.

0

Comme d'autres l'ont dit, c'est probablement le meilleur moyen. Je voulais juste ajouter que selon la version .NET et votre politique de codage que vous pourriez envisager d'ajouter « ce » à la signature de la méthode et en faire une méthode d'extension pour faciliter l'accès, comme ceci:

using Drawing2DMatrix = System.Drawing.Drawing2D.Matrix; 
public static Drawing2DMatrix ConvertToDrawing2DMatrix(this Matrix matrix) {...} 

Ensuite, vous pouvez appelez-le comme ceci:

Drawing2DMatrix newMatrix = myMediaMatrixInstance.ConvertToDrawing2DMatrix(); 

Juste une suggestion.

Questions connexes