Entwickler-Ecke
Multimedia / Grafik - Vektorgrafik skalieren
Christoph1972 - Do 01.04.10 17:05
Titel: Vektorgrafik skalieren
Hallo zusammen,
ich habe eine Vektorgrafik (*.emf), diese hat ca. eine Auflösung von 4700*2700 Pixel. Die Grafik ist ein Diagramm, in schwarz weis. Diese muss ich nun auf eine handliche Größe runter skalieren. Wenn ich das mit der PictureBox mache, sieht es fürchterlich aus, da die Linien z.T. unterbrochen sind.
Wenn ich das Image, so wie
hier [
http://www.vbarchiv.net/tipps/tipp_1666-bild-skalieren-vbnet.html] beschrieben, runterskaliere, sind die Linien nur noch grau und schlecht zu erkennen. Das Ergebnis ist jedoch deutlich besser als das Stretchen der PictureBox.
Hat hier jemand eine Idee, wie man eine gescheite Skalierung in solchen Dimensionen hinbekommt?
Kha - Do 01.04.10 19:56
Wenn die Linien ihre Dicke beibehalten sollen, kann das logischerweise nur durch Bearbeiten der Rohdaten funktionieren. Wenn du allerdings keine .NET-EMF-Lib findest, würde ich es zuerst nach SVG konvertieren, XML lässt sich dann doch etwas einfacher bearbeiten ;) .
Christoph1972 - Do 01.04.10 22:12
Hi, vielen Dank für die Anregung! Hast du was spezielles für .Net im Auge? Ich habe mal Google befragt, habe aber "noch" nichts "seriöses" gefunden.
Kha - Do 01.04.10 22:26
Zum Konvertieren? Wiki nennt Batik, das könntest du mit etwas Glück sogar mit IKVM.NET für .NET kompilieren.
Christoph1972 - Sa 03.04.10 21:22
Hi,
vielen Dank für die Info! Ich habe heute beinahe den ganzen Tag gegoogelt, leider ist mir das mit Batik zu aufwendig. Ich möchte ja "nur" ein Image auf eine handliche Größe skalieren. Mich ärgert es schon etwas, das ich nur eine mangelhaftes, oder ein völlig over sized Image zur verfügung habe, keine Ahnung, was sich die Entwickler dabei gedacht haben....
Gibt es noch andere Vorschläge?
Kha - So 04.04.10 00:10
Äh, geht es jetzt eigentlich nur um genau ein Image :?: Dann kannst du das doch mit einem beliebigen WMF2SVG-Programm schnell konvertieren, die Strichstärke kannst du wahrscheinlich sogar ohne Code direkt in Inkscape bearbeiten.
Christoph1972 - So 04.04.10 08:52
Ja genau, ich muss Images skalieren, die im .emf Format vorliegen. Mir wäre sehr geholfen, wenn ich eine Klasse oder Dll hätte, die das erledigt, da die Bearbeitnung aus meinem Programm erfolgen muss und zwar so, das die User sich nicht damit beschäftigen müssen, die Auflösung ist immer gleich und der Faktor ist auch fix. Ich denke Inkscape kann mir da auch nicht helfen.
Christoph1972 - So 04.04.10 10:11
Man was bin ich ein Penner......
Ich habe scheinbar einfach den Wald vor lauter Bäumen nicht gesehen. Keine Ahnung warum ich behauptet habe, das diese Methode nicht das macht was ich benötige.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private Image NewImage(Bitmap emfImage, Size newSize) { Bitmap newImage = new Bitmap(newSize.Width, newSize.Height);
using (Graphics g = Graphics.FromImage(newImage)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.DrawImage(emfImage, new Rectangle(0, 0, newSize.Width, newSize.Height)); }
return newImage; } |
Ich hatte wohl ein Fehler im Ablauf. Der Ablauf sieht nun so aus: Bild laden, die Farbe der Line ändern, dann das Image skalieren und dann den Hintergrund transparent machen. So kann ich schön die Images überlagern.
Ich hoffe nun das ich bei dieser Aussage bleibe, da ich das Projekt nicht hier habe, ich kann es erst in der nächsten Woche testen. Ich bin aber zuversichtlich!
Ich sage erst mal vielen Dank für deine(Kha) und eure Hilfe!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!