Hallo, ich ärgere mich im Moment mit dem "Design" von einem Ausdruck herrum. Mein Problem hierbei ist, das die Ergebnisse, je nach Rechner und Drucker Unterschiedlich sind. Mein Problem ist, das ich in ein existierendes Formular Drucken muß. Der Ausdruck muß also in vorgefertigte Felder passen. Den Ausdruck Initialisiere ich mit: ----- if ( printer->setup(0) ) // Nur wenn Drucker ausgewählt { //printer->setPrintProgram(fsconfig->getProgrammName()); printer->setFullPage(TRUE); QPainter p; if( !p.begin( printer ) ) // paint on printer return FALSE; // ging wohl schief QFont font = QApplication::font(); font.setPointSizeFloat(9.35); //10,00 , 10,20 , 10.25); p.setFont( font ); //@todo einen festen font zum drucken setzen QFontMetrics fm = p.fontMetrics(); QPaintDeviceMetrics metrics( printer ); // need width/height p.drawText( Margin + (td->getX() * fm.width('u')), Margin + (fm.lineSpacing() * td->getY()), metrics.width(), fm.lineSpacing(), Qt::ExpandTabs | Qt::DontClip, getFieldText(td->getType()) ); .................... snipp ...................... ----- Nun sollte ja der Ausdruck immer gleich groß sein. Er kann sich zwar leicht verschieben durch die Druckränder, was aber keine Rolle spielen würde. Auf einem Rechner passt das auch perfekt. Das Problem ist, das der Ausdruck an einem zweiten Rechner über 2,5 cm höher war und nicht mehr in die Felder passte. So wie ich das gelesen habe, ist doch die Punktgröße, die mit setPointSizeFloat() gesetzt wird konstant groß. Sollte also unabhängig vom Drucker und Rechner sein. Oder muß ich die Größe eines Punktes erst noch ausrechnen ? Im Prinzip brauche ich "Schreibmaschienen Schrift" von der größe her. Kann mir einer sagen was ich falsch mache ?! Beide Rechner haben Suse 9.3. Danke Juergen
Hallo, kann mir keiner Sagen, wie die Punktgröße in QT3 definiert ist, bzw wovon die abhängt ? Entweder hat Sie eine Feste Größe oder Sie ist abhängig von der Auflösung meiner "Zeichenfläche". Leider habe ich keinen Hinweis hierzu gefunden in den Docs. Danke Juergen Juergen Sachs wrote:
Hallo,
ich ärgere mich im Moment mit dem "Design" von einem Ausdruck herrum.
Mein Problem hierbei ist, das die Ergebnisse, je nach Rechner und Drucker Unterschiedlich sind. Mein Problem ist, das ich in ein existierendes Formular Drucken muß. Der Ausdruck muß also in vorgefertigte Felder passen.
Den Ausdruck Initialisiere ich mit: ----- if ( printer->setup(0) ) // Nur wenn Drucker ausgewählt { //printer->setPrintProgram(fsconfig->getProgrammName()); printer->setFullPage(TRUE); QPainter p; if( !p.begin( printer ) ) // paint on printer return FALSE; // ging wohl schief QFont font = QApplication::font(); font.setPointSizeFloat(9.35); //10,00 , 10,20 , 10.25); p.setFont( font ); //@todo einen festen font zum drucken setzen QFontMetrics fm = p.fontMetrics(); QPaintDeviceMetrics metrics( printer ); // need width/height p.drawText( Margin + (td->getX() * fm.width('u')), Margin + (fm.lineSpacing() * td->getY()), metrics.width(), fm.lineSpacing(), Qt::ExpandTabs | Qt::DontClip, getFieldText(td->getType()) ); .................... snipp ...................... ----- Nun sollte ja der Ausdruck immer gleich groß sein. Er kann sich zwar leicht verschieben durch die Druckränder, was aber keine Rolle spielen würde. Auf einem Rechner passt das auch perfekt. Das Problem ist, das der Ausdruck an einem zweiten Rechner über 2,5 cm höher war und nicht mehr in die Felder passte.
So wie ich das gelesen habe, ist doch die Punktgröße, die mit setPointSizeFloat() gesetzt wird konstant groß. Sollte also unabhängig vom Drucker und Rechner sein. Oder muß ich die Größe eines Punktes erst noch ausrechnen ? Im Prinzip brauche ich "Schreibmaschienen Schrift" von der größe her.
Kann mir einer sagen was ich falsch mache ?!
Beide Rechner haben Suse 9.3.
Danke Juergen
Hallo, ich kann dir leider bei diesem Thema nicht weiterhelfen, aber vielleicht findes du hier was: www.qtforum.org www.qtforum.de Gruß aus Bayern Wede Am Tuesday, 9. August 2005 12:41 schrieb Juergen Sachs:
Hallo,
kann mir keiner Sagen, wie die Punktgröße in QT3 definiert ist, bzw wovon die abhängt ? Entweder hat Sie eine Feste Größe oder Sie ist abhängig von der Auflösung meiner "Zeichenfläche". Leider habe ich keinen Hinweis hierzu gefunden in den Docs.
Danke Juergen
Juergen Sachs wrote:
Hallo,
ich ärgere mich im Moment mit dem "Design" von einem Ausdruck herrum.
Mein Problem hierbei ist, das die Ergebnisse, je nach Rechner und Drucker Unterschiedlich sind. Mein Problem ist, das ich in ein existierendes Formular Drucken muß. Der Ausdruck muß also in vorgefertigte Felder passen.
Den Ausdruck Initialisiere ich mit: ----- if ( printer->setup(0) ) // Nur wenn Drucker ausgewählt { //printer->setPrintProgram(fsconfig->getProgrammName()); printer->setFullPage(TRUE); QPainter p; if( !p.begin( printer ) ) // paint on printer return FALSE; // ging wohl schief QFont font = QApplication::font(); font.setPointSizeFloat(9.35); //10,00 , 10,20 , 10.25); p.setFont( font ); //@todo einen festen font zum drucken setzen QFontMetrics fm = p.fontMetrics(); QPaintDeviceMetrics metrics( printer ); // need width/height p.drawText( Margin + (td->getX() * fm.width('u')), Margin + (fm.lineSpacing() * td->getY()), metrics.width(), fm.lineSpacing(), Qt::ExpandTabs | Qt::DontClip, getFieldText(td->getType()) ); .................... snipp ...................... ----- Nun sollte ja der Ausdruck immer gleich groß sein. Er kann sich zwar leicht verschieben durch die Druckränder, was aber keine Rolle spielen würde. Auf einem Rechner passt das auch perfekt. Das Problem ist, das der Ausdruck an einem zweiten Rechner über 2,5 cm höher war und nicht mehr in die Felder passte.
So wie ich das gelesen habe, ist doch die Punktgröße, die mit setPointSizeFloat() gesetzt wird konstant groß. Sollte also unabhängig vom Drucker und Rechner sein. Oder muß ich die Größe eines Punktes erst noch ausrechnen ? Im Prinzip brauche ich "Schreibmaschienen Schrift" von der größe her.
Kann mir einer sagen was ich falsch mache ?!
Beide Rechner haben Suse 9.3.
Danke Juergen
-- Thomas Wedehase Bischofsgruen, Germany www.thomaswedehase.com
Moin, Am Dienstag, den 09.08.2005, 12:41 +0200 schrieb Juergen Sachs:
kann mir keiner Sagen, wie die Punktgröße in QT3 definiert ist, bzw wovon die abhängt ?
Wenn du mit "Punktgröße" die Einheit für Schriftgröße meinst, dann ist die fest definiert - so wie ein Zentimeter auf jedem Ausgabegerät gleich gross ist, ist eine 12-Punkt-Schrift überall gleich groß. (Unglücklicherweise beachtet ein bekanntes Micro$oft-Betriebssystem das nicht im Browser, aber davon darf man sich nicht verwirren lassen) Abhängig ist die Korrektheit von einer korrekt gesetzten Auflösung. Um letztlich ein 12 Punkt grosses A auf dem Bildschirm zu erzeugen, muss das System die Größe des Monitors und die Auflösung korrekt wissen, um auszurechen, wieviel Pixel 12 Punkt ergeben. Ist dort etwas falsch eingestellt, und man dreht einfach Schriftgrössen höher, um lesbare Schrift zu bekommen, haut das natürlich auf einem anderen Ausgabegerät (Drucker) nicht mehr hin. Also: "Punkt" ist eine feste Größe. Auflösung muss korrekt gesetzt sein. Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Am Mittwoch, 10. August 2005 21:32 schrieb Joerg Rossdeutscher:
Am Dienstag, den 09.08.2005, 12:41 +0200 schrieb Juergen Sachs:
kann mir keiner Sagen, wie die Punktgröße in QT3 definiert ist, bzw wovon die abhängt ?
Wenn du mit "Punktgröße" die Einheit für Schriftgröße meinst, dann ist die fest definiert - so wie ein Zentimeter auf jedem Ausgabegerät gleich gross ist, ist eine 12-Punkt-Schrift überall gleich groß.
(Unglücklicherweise beachtet ein bekanntes Micro$oft-Betriebssystem das nicht im Browser, aber davon darf man sich nicht verwirren lassen)
Abhängig ist die Korrektheit von einer korrekt gesetzten Auflösung. Um letztlich ein 12 Punkt grosses A auf dem Bildschirm zu erzeugen, muss das System die Größe des Monitors und die Auflösung korrekt wissen, um auszurechen, wieviel Pixel 12 Punkt ergeben. Ist dort etwas falsch eingestellt, und man dreht einfach Schriftgrössen höher, um lesbare Schrift zu bekommen, haut das natürlich auf einem anderen Ausgabegerät (Drucker) nicht mehr hin.
Also: "Punkt" ist eine feste Größe. Auflösung muss korrekt gesetzt sein.
Das bedeutet also, das der Ausdruck auch von den Einstellungen des Bildschirms abhängt ? Oder war das jetzt nur Beispielhaft auf den Monitor bezogen ? Danke Juergen
Am Freitag, den 12.08.2005, 13:49 +0200 schrieb Juergen Sachs:
Das bedeutet also, das der Ausdruck auch von den Einstellungen des Bildschirms abhängt ? Oder war das jetzt nur Beispielhaft auf den Monitor bezogen ?
Beispielhaft. Um eine Punktgrösse korrekt zu berechnen, benötigt eine Software die physikalisch korrekten Werte bzgl. Größe und Auflösung des Ausgabegerätes. Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
participants (4)
-
Joerg Rossdeutscher
-
Juergen Sachs
-
Juergen Sachs
-
Thomas Wedehase