Wie kann ich die Größe ändern (verkleinern) EMF (Metafile) in .Net?

Habe ich eine EMF-Datei. Ich möchte, um Ihre Größe kleiner.

Wie mache ich das in .net (oder tool) , ohne ein unscharfes Bild?

Die resultierende verkleinerte Bild wird in ein anderes format konvertiert (png/jpg/whatever), ich kann damit umgehen (denke ich).

Ich habe nicht gefunden ein klares Beispiel .Net (oder jede andere Sprache-Plattform für die Materie), das sich mit emf/metafiles.

Ist, habe ich mich in der Grafikprogrammierung mit GDI+ aber es stellt nur Metadateien.

Habe ich versucht, Image Magick, aber Sie müssen in ein anderes format konvertieren (das muss ich sowieso tun) und das Ergebnis ist verschwommen (wenn verkleinert und umgewandelt zu png zum Beispiel).

Habe ich versucht, Inkscape, aber Sie können nur importieren eines EMF-Datei und Inkscape importiert upside-down - und in keinem Verhältnis in eine bestehende Zeichnung.

Auch, (nicht lachen) habe ich öffnete es im Fenster Malen (einer der wenigen Bild-editing-software-Programme, open-emf) in Ihrer Größe und Position der Zeichnung, wieder, es ist verschwommen.

Update:
Hier ist der code, den ich verwende, um die Größe.

Dieser funktioniert, aber das resultierende Bild ist unscharf. Der code ist nur ein Allgemeines Bild re-sizing-routine, nicht-spezifische EMF

private static Image resizeImage(Image imgToResize, Size size)
{
    int sourceWidth = imgToResize.Width;
    int sourceHeight = imgToResize.Height;

    float nPercent = 0;
    float nPercentW = 0;
    float nPercentH = 0;

    nPercentW = ((float)size.Width / (float)sourceWidth);
    nPercentH = ((float)size.Height / (float)sourceHeight);

    if (nPercentH < nPercentW)
        nPercent = nPercentH;
    else
        nPercent = nPercentW;

    int destWidth = (int)(sourceWidth * nPercent);
    int destHeight = (int)(sourceHeight * nPercent);

    Bitmap b = new Bitmap(destWidth, destHeight);
    Graphics g = Graphics.FromImage((Image)b);
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;

    g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
    g.Dispose();

    return (Image)b;
}

Quelle:
http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing

  • Ich wollte Fragen, wo Sie gerade zeichnen, die EMB. Aber, was Magnus gerade gebucht, sollten Sie alles, was Sie tun wollen.
InformationsquelleAutor Chris Weber | 2012-08-23
Schreibe einen Kommentar