HILFE Problem beim Drucken
-
vieleicht hat da ja jemand eine Lösung
Ich drucke an einem TintenstrahlDrucker eine Tabelle aus
Dort werden die Druckbreiten und Druckhöhen richtig genommen.
Schriftgrößen sind alle o.k.Wenn ich jetzt das gleiche an einem Laderdrucker drucke stimmen die Werte
nicht mehtHier mal etwas Code
dcPrint.StartPage(); dcPrint.TextOut(1800,80,"Erstellt am: "+ Datum); // Neue Schrift auswählen, originale speichern CFont* pOldFont = dcPrint.SelectObject(&fnBig); dcPrint.TextOut(700,150,"Rechenbericht für "+ Username); // Alte Schrift wiederherstellen dcPrint.SelectObject(pOldFont); DruckHoehe = 400; // Neue Schrift auswählen, originale speichern CFont* pOldFont3 = dcPrint.SelectObject(&fnBig1); dcPrint.TextOut(DruckBreite =+150,DruckHoehe,"gestellte Aufgabe"); dcPrint.TextOut(DruckBreite =+650,DruckHoehe,"Lösungsvorschlag"); dcPrint.TextOut(DruckBreite =+1150,DruckHoehe,"Lösung"); dcPrint.TextOut(DruckBreite =+1650,DruckHoehe,"richtig gelöst"); dcPrint.TextOut(DruckBreite =+2000,DruckHoehe,"Lösungszeit"); // Alte Schrift wiederherstellen dcPrint.SelectObject(pOldFont3); DruckHoehe = DruckHoehe + 100; for (int a = 0;a < Datenanzahl;a++) { dcPrint.TextOut(DruckBreite =+150,DruckHoehe,Druck[a][0]); dcPrint.TextOut(DruckBreite =+650,DruckHoehe,Druck[a][1]); dcPrint.TextOut(DruckBreite =+1150,DruckHoehe,Druck[a][2]); if ( Text[a][6] == "nein") { dcPrint.SetTextColor(RGB(255,0,0)); dcPrint.TextOut(DruckBreite =+1650,DruckHoehe,Druck[a][3]); dcPrint.SetTextColor(RGB(0,0,0)); } else { dcPrint.TextOut(DruckBreite =+1650,DruckHoehe,Druck[a][3]); } dcPrint.TextOut(DruckBreite =+2000,DruckHoehe,Text[a][7]); DruckHoehe = DruckHoehe + 60; if (DruckHoehe > 3080 || DruckHoehe > 6160 ) { dcPrint.EndPage(); dcPrint.StartPage(); DruckHoehe = 300; } } DruckHoehe = DruckHoehe + 200; if (DruckHoehe > 2860 || DruckHoehe > 5720 ) { dcPrint.EndPage(); dcPrint.StartPage(); DruckHoehe = 300; } // Neue Schrift auswählen, originale speichern CFont* pOldFont1 = dcPrint.SelectObject(&fnBig1); dcPrint.TextOut(DruckBreite =+150,DruckHoehe,"Auswertung:"); dcPrint.TextOut(DruckBreite =+1650,DruckHoehe,"Notenschlüssel:"); // Alte Schrift wiederherstellen dcPrint.SelectObject(pOldFont1);
wo ist der unterschied zum Beispiel
dcPrint.TextOut(1800,80,"Erstellt am: "+ Datum);
hier
1800 und 80
Wie nimmt es der Tintenstrahldrucker und wie der Laserdrucker
Kennt da jemand eine Lösung
Ist eine Dialogbasierende Anwendung welches keine
Druckvorschau implementiert hatDanke
Vossy
-
Du musst die Auflösung des Druckers berücksichtigen.
Schau dir mal an wieviele Punkte ein Laserdrucker auf A4 Drucken kann und wieviel deiner. Dann merkst du den Unterschied.
-
Hallo unixtom@home
Habe ich eine möglichkeit dises zu beeinflussen
oder dem Drucker mitzuteilen welche Auflösung ich wünsche.Besser währe es natürlich wenn das programm ermitteln könnte
welche Auflösung der Drucker hat.Gibt es da etwas da ich zu diesem Thema nichts finde
Vossy
Ein Beispiel wäre nett.
-
z.B.
dcPrint.GetDeviceCaps(HORZRES)
Die DPI holen
Punkte pro Zoll und diese auf die Punkte Pro Millimeter umrechnen. Dann weisst du wie viele Punkte du bei einem Milimeter Zeichen musst.
B.z.w. wieviele Punkte eine A4 Seite hat.Ich gebe dir vorerst kein Bsp. da es sich hier um Rechnungen handelt die man verstehen muß.
Also setzte dich damit auseinander. Habe auch einige Zeit gebraucht um das System für verschiedene Drucker und Auflösungen zu verstehen.
Wenn du es verstanden hast dann gibt es für dich auch keine Probleme mehr auf mit den GDI zu Zeichen.[ Dieser Beitrag wurde am 29.10.2002 um 13:44 Uhr von Unix-Tom editiert. ]
-
ich weiß was du mir sagen möchtest und die Berechnung
ist sicherlich nicht das problem sondernCDC dcPrint; // dcPrint.SetMapMode(MM_LOMETRIC); // Höhen-/Seitenverhältnis des Geräts berechnen double Horizontes = dcPrint.GetDeviceCaps(HORZRES); //(double)dcPrint.GetDeviceCaps(VERTSIZE); CString Ausg; Ausg.Format("%f ",Horizontes); MessageBox(Ausg);
ich bekomme zur Berechnung keinen Wert vom Contex zurück
mit den ich Rechnen könnte. Das Versuche ich jetzt schon seit gestern aber
ohne erfolgMache ich da ein Fehler
Vossy