Zum Inhalt springen

Font - Problem


xellon

Empfohlene Beiträge

Hi!

Ich brauche wieder mal euere hilfe.

Hier erstmal mein quelltext:


CPrintDialog dlg(FALSE);
int ok;
ok = dlg.DoModal();

if(ok == IDOK)
{
CDC dc;
dc.Attach(dlg.GetPrinterDC());

dc.StartDoc("MyDoc");

int MaxX = dc.GetDeviceCaps(HORZRES);
int MaxY = dc.GetDeviceCaps(VERTRES);

//hier gebe ich meinen text aus
dc.TextOut(MaxX/60,MaxY/45,"Test");


dc.EndDoc();
DeleteDC(dc.Detach());
}
[/PHP]

Ich will das beim drucken die schrifftgröße immer gleich ist.

Beim drucken zeichne ich auch eine Tabelle und in der tabelle schreibe ich die daten. Wenn die schrifftgröße dann größer ist als ich will sieht das ganze nicht gut aus.

Weis jemand wie ich dem Drucker 'sagen' kann eine bestimmte Schrifftgröße zu benutzen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Beispiel:

CFont font;

font.CreateFont( 80, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH, L"Arial" );

dc.SelectObject( font );

Die 80 ist hier ein Beispiel, du musst mit den Werten ein wenig experimentieren. Falls mehrere Druckauflösungen unterstützt werden sollen, solltest Du beim ersten Parameter von CreateFont noch den Wert von dc.GetDeviceCaps( LOGPIXELSY ) berücksichtigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

...es funktioniert doch nicht richtig.

Originally posted by Klotzkopp

CFont font;

font.CreateFont( 80, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH, L"Arial" );

dc.SelectObject( font );

Wenn ich die höhe auf 80 setze dann sieht dass nicht auf alle Drucker gleich.

Es muss eine möglichkeit geben die schrifft auf alle Drucker gleich aussehen zu lassen.

Ich hoffe jemand kann mir helfen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Klotzkopp

Falls mehrere Druckauflösungen unterstützt werden sollen, solltest Du beim ersten Parameter von CreateFont noch den Wert von dc.GetDeviceCaps( LOGPIXELSY ) berücksichtigen.

Auf einen Drucker hatte pixelY denn wert 200, auf einen zweiten 1200 und auf einen dritten 180.

Ich habe es so:


int pixelY = dc->GetDeviceCaps(LOGPIXELSY);
CFont *fon = new CFont();
fon->CreateFont(pixelY/6,0,0,0,FW_DONTCARE,0,0,0,ANSI_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS,
PROOF_QUALITY, FIXED_PITCH, NULL);
[/PHP]

versucht aber es funktioniert nicht. Hast vieleicht einen kleinen beispiel für mich?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich sowas in der Art mal ohne MFC gemacht, und hab dann nachdem der Benutzer den

Drucker ausgewählt hatte mir die aktuelle Auflösung (also die DPI Zahl) zurückgeben

lassen und dann das in meine Rechnungen miteinbezogen.

Das ging damals nachdem aufruf des PrintDLG() über die DEVMODE Strukter, aber

wie gesagt das war ohne MFC. Vielleicht hilfts dir ja trotzdem.

Gruß

Guybrush

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...