J'écris quelque chose pour créer de petits aperçus bitmap à partir d'un fichier au format vectoriel. A partir du fichier, j'ai une (grande) liste de coordonnées de ligne. Ce que je veux faire, c'est l'adapter à une image de largeur fixe (96x96). J'avais auparavant dessiné l'image bitmap en taille réelle et je l'ai juste redimensionnée en 96x96, mais comme les vignettes devaient être créées à la volée, elles ne sont pas assez rapides (et c'était une façon vraiment stupide de le faire dans le premier endroit!). Maintenant, je veux juste mettre à l'échelle toutes les coordonnées comme si la taille originale était 96x96, laisser tomber tous les points qui se dessinent les uns sur les autres et cela devrait augmenter considérablement les performances.Scaling graphique C#/GDI (Drawline)
Je suis un débutant absolu avec tout et n'importe quoi .NET Graphics/GDI et la première version était assez simple (code ci-dessous). Je me demande s'il y a quelque chose dans la bibliothèque graphique (ou ailleurs) qui le fait sans que je doive parcourir tous les points et faire le calcul sur chacun d'entre eux.
Un gourou graphique/GDI peut-il me diriger dans la bonne direction (ou laissez-moi savoir qu'il n'y a pas de direction)? J'utilise C# et la cible du framework .NET est OK.
Jusqu'à présent, il est assez simple (tmpblocks est un tableau de points):
Bitmap DrawArea;
Graphics xGraph;
DrawArea = new Bitmap(64, 64);
// ^- this is GetWidth() and GetHeight() when drawing the full file at full size
xGraph = Graphics.FromImage(DrawArea);
for (int i = 0; i < tmpblocks.Count; i++)
{
if (tmpblocks[i].stitches.Length > 1)
{
Pen tempPen = new Pen(tmpblocks[i].color, 1.0f);
tempPen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
tempPen.EndCap = System.Drawing.Drawing2D.LineCap.Round;
tempPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
xGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
xGraph.DrawLines(tempPen, tmpblocks[i].stitches);
}
}
Pour la miniature que je venais de l'échelle de la bitmap résultante en utilisant la méthode .GetThumbnail. Vraiment lent, bien que (évidemment) ...
Je l'ai vu et essayé, mais tout ce que je reçois est un BMP blanc avec quelques lignes dans le coin .. – user802084
Ah, on dirait que je vais devoir utiliser TranslateTransform ... – user802084
Je ne sais pas pourquoi vous aurait besoin d'utiliser translate transformer, à moins qu'il y ait d'autres différences de système de coordonnées entre le fichier vectoriel et le périphérique graphique, c'est-à-dire vers quelle direction y pointe. Cependant, si cette réponse a aidé, je serais très obligé de le marquer comme étant répondu. – Mranz