Laden...

DrawImage ist unscharf beim drucken

Erstellt von Andreas@Tricept vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.682 Views
A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren
DrawImage ist unscharf beim drucken

Hallo,
ich habe folgenden vereinfachten Codeausschnitt:


                    Bitmap i = new Bitmap(80, 30);
                    Graphics g = Graphics.FromImage(i);
                    g.DrawString(" Das ist ein Test 123.456", SystemFonts.DefaultFont, Brushes.Black, new Rectangle(0, 0, 100, 100));
                    i.Save(@"C:\temp\bla.png", ImageFormat.Png);

Wenn ich das gespeicherte Bild nun in Word oder einem anderen Programm einfüge und drucke, dann sieht das Bild sehr schrecklich aus. Auch wenn ich die Graphics Zeichenoperationen umstelle wie SmoothingMode oder TextRenderingHint. (Habe alle 1152 Kombinationsmöglichkeiten ausgedruckt und kein Erfolg gehabt). Manche Möglichkeiten sehen manchmal ganz gut aus, jedoch sind dann wieder ein paar Pixel zuviel drin...
Zum leichteren Verständnis habe ich hier zwei Beispielgrafiken:

Weis jemand was das Problem sein könnte?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

tritt das Problem auch bei anderen Fonts auf?
Probier mal wie es mit Arial ausschaut.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Dein Bitmap ist ja nur 80x30 Pixel. Wie groß ist denn Dein Ausdruck davon? Ich nehme an, das wird fürchterlich hochskaliert beim Einfügen oder Drucken.

Versuch mal das Bild beträchtlich größer anzulegen, mit einem größeren Font zu schreiben und dann nochmal das Ergebis zu drucken.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo,

probier mal das, dadurch sollte es besser werden:


Bitmap i = new Bitmap(80, 30);
Graphics g = Graphics.FromImage(i);

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; //<--Hinzugefügt

g.DrawString(" Das ist ein Test 123.456", SystemFonts.DefaultFont, Brushes.Black, new Rectangle(0, 0, 100, 100));
i.Save(@"C:\temp\bla.png", ImageFormat.Png);

fz

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

1.130 Beiträge seit 2007
vor 13 Jahren

Ich hatte mal sehr ähnliche ergebnisse, allerdings nicht beim Drucken.

Ich hatte aus versehen sourcecopy anstatt alphablending eingestellt. Dadurch wurden die halbtransparenten pixel auf einmal komplett schwarz.

Ob es nun darabn ligt oder nicht: probier auf jeden fall mal alle werte für das antialiasing von Text durch, also wenn der hochqualitativste modus nix bringt auch mal komplett abstellen.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren

@gfoidl: Ich habe mal Arial genommen, komme jedoch auf gleiche Ergebnisse...
@MarsStein: Ich habe nichts skaliert, die Ausdrucksgrafik sieht nur so groß aus weil ich die aus einem gezoomten PDF Dokumenten kopiert hab.
@F.Z. Mit einem anderen TextRenderingHint lassen sich zwar bessere Ergebnisse erzielen, jedoch ist der Ausdruck niemals perfekt...
@Floste: Ich verwende die Defaultwerte, ich habe es auch mit anderen Eigenschaften probiert, komme aber auf keinen grünen Zweig.

Es muss doch generell möglich sein scharfe Bilder mit .Net zu erzeugen oder ?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Es muss doch generell möglich sein scharfe Bilder mit .Net zu erzeugen oder ?

Ist es ja. Wenn ich


Bitmap bmp = new Bitmap(80, 30);
Graphics g = Graphics.FromImage(bmp);
g.DrawString("Das ist ein Test 123.456", SystemFonts.DefaultFont, Brushes.Black, new RectangleF(0, 0, 100, 100));
bmp.Save("test.png");

ausführe kommt angehängtes scharfes Bild raus. Probier mal obs mit diesem Bild auch so grausig ausschaut wenn es in Word ist.

Nur beim reinzoomen mit einem Bildbetrachter beginnt es zu pixeln aber das ist ja normal.

Edit: Im angehängten Bild einen weißen Hintergrund statt Transparenz mit g.Clear(Color.White) eingefügt -> sonst schauts im Post komisch aus.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren

Das g.Clear(Color.White) macht tatsächlich den Unterschied! Damit ist mein Problem behoben. Vielen Dank gfoidl, ich hab da schon so lange dran gesessen und endlich wurde die Lösung gefunden !!!

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

auch ohne Clear war es schön, nur die Transparenz lies den Anhang nicht als Bild erkennen -> daher weiß.

Hier könnte es sein dass Word nicht mit Transparenz umgehen kann?!
Aber egal - wenns geht passt es auch 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 13 Jahren

in meinem Projekt male ich eine art Tabelle und ich male auch einen nicht transparenten Hintergrund. Ohne den Clear Befehl wird die Grafik nicht korrekt mit dem Clear Befehl sieht alles super aus. Ich kann mir zwar keinen Reim darauf machen, aber freu mich das es damit erledigt ist.