Hallo,
Vorweg erstmal ein Dank an alle Aktivisten in diesem Forum für ihre Hilfe...
Ein paar Informationen zu meinem Problem, Ich habe eine Mitgliederverwaltung mit Access-Anbindung programmiert, funktioniert soweit auch ganz zufriedenstellend. Nun soll noch der Druck eines Mitgliedschaftszertifikates als Feature eingefügt werden - vorher habe ich alles selber gemanagt, und für diese Aufgabe CorelDraw eingesetzt. Jetzt soll das ganze auch geoutsourced werden. Als Vorlage dazu dient eine JPEG Datei in die (zentriert) Name und andere Daten eingetragen werden sollen...
Soweit so gut, mit DrawText() und TextWidth() ist auch die Positionierung kein Problem - bis auf die Tatsache das die Dateien in Hinblick auf Schriftbildqualität nicht wirklich schön aussehen.
Nach einigem Suchen bin ich auf die GDI+ gestossen, hier sieht auch der Schriftzug dank Hinting super aus - nur an dem Positionieren der Texte bin ich gescheitert.
Wahrscheinlich bin ich nur zu blind und habe den entscheidenden Hinweis überlesen (gestern 11 Stunden Internetsuche hinter mich gebracht)...
Langer Rede, kurzer Sinn...
Wie kann ich unter Verwendung von GDI+ einen Text mit DrawString zentrieren, bzw seine Länge herausbekommen, um manuell zu zentrieren (TextWidth scheidet ja aus)?
Ach ja, Software ist hier PB 4.02 auf Vista Ultimate/Windows XP Pro
GDI+ StringFormat auf Centered setzen?
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
willkommen an Board
> Als Vorlage dazu dient eine JPEG Datei in die (zentriert) Name und andere Daten eingetragen werden sollen...
JPEG ist je nach benutzter komprimierung/features ein äußerst verlustbehaftetes format.
es geht aus deinem absatz nicht klar hervor, ob
> bis auf die Tatsache das die Dateien in Hinblick auf Schriftbildqualität nicht wirklich schön aussehen.
sich auf als JPEG gespeicherte vorlagen bezieht.
sollte das der fall sein, benutze stattdessen mal PNG und vergleiche die ergebnisse.
> Als Vorlage dazu dient eine JPEG Datei in die (zentriert) Name und andere Daten eingetragen werden sollen...
JPEG ist je nach benutzter komprimierung/features ein äußerst verlustbehaftetes format.
es geht aus deinem absatz nicht klar hervor, ob
> bis auf die Tatsache das die Dateien in Hinblick auf Schriftbildqualität nicht wirklich schön aussehen.
sich auf als JPEG gespeicherte vorlagen bezieht.
sollte das der fall sein, benutze stattdessen mal PNG und vergleiche die ergebnisse.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Moin Kaeru,
Danke für das Willkommen...
Das Problem ist die Schriftqualität der Text die Mittels DrawText eingebracht werden...
Mir kommt es hierbei nicht auf Dateigröße an
Es geht nur um das Zentrieren der zu schreibenden Daten...
btw ich greife dabei auf den GDI+ Wrapper von SFSxOI zurück.
Danke für das Willkommen...
Die Vorlage ist nicht das Problem, die liegen mit 100% Quality, zwischen 300 und 533 dpi bei einer Auflösung jenseits der 1750x1240 Pixel vor.JPEG ist je nach benutzter komprimierung/features ein äußerst verlustbehaftetes format.
Das Problem ist die Schriftqualität der Text die Mittels DrawText eingebracht werden...
Mir kommt es hierbei nicht auf Dateigröße an

Es geht nur um das Zentrieren der zu schreibenden Daten...
btw ich greife dabei auf den GDI+ Wrapper von SFSxOI zurück.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Das Problem ist die Schriftqualität der Text die Mittels DrawText eingebracht werden...
achso, verstehe. einfarbig mit pixelrand.
ja klar, is nich so prickelnd.
> btw ich greife dabei auf den GDI+ Wrapper von SFSxOI zurück.
kenn ich selber nicht, sorry.
achso, verstehe. einfarbig mit pixelrand.
ja klar, is nich so prickelnd.
> btw ich greife dabei auf den GDI+ Wrapper von SFSxOI zurück.
kenn ich selber nicht, sorry.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Re: GDI+ StringFormat auf Centered setzen?
TextWidth scheidet nicht aus. Du kannst den Font ganz normal mitDK5UR hat geschrieben: Wie kann ich unter Verwendung von GDI+ einen Text mit DrawString zentrieren, bzw seine Länge herausbekommen, um manuell zu zentrieren (TextWidth scheidet ja aus)?
PB laden, ihn auf das aktuelle DC packen und TextWidth nutzen.
Den Font kannst du dann mit GdipCreateFontFromDC auch gleich
noch GDI+ uebergeben.
Beispiel :
Code: Alles auswählen
[...]
LoadFont(0,"ARIAL",15)
hdc = StartDrawing(ImageOutput(#Image1))
If hdc And GdipCreateFromHDC(hdc, @*graphics) = #Ok
DrawingFont(FontID(0))
cx = TextWidth("blub")
GdipCreateFontFromDC(hdc,@*font)
[...]
EndIf
StopDrawing()
EndIf
[...]
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Um Texte zentriert auszugeben kannst Du auch auf die API-Funktion "DrawText_()" oder auch "DrawTextEx_()" zurückgreifen.
Ob die damit zu erreichende Ausgabequalität auf dem Drucker Deinen Ansprüchen genügt kann ich nicht sagen - aber zumindest kannst Du den Text damit nach belieben in alle Richtungen ausrichten lassen.
Ob die damit zu erreichende Ausgabequalität auf dem Drucker Deinen Ansprüchen genügt kann ich nicht sagen - aber zumindest kannst Du den Text damit nach belieben in alle Richtungen ausrichten lassen.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Danke edel,
So funktioniert es - Na klar...
Manchmal sieht man den Wald vor Bäumen nicht...Gut, das es mehrere Förster gibt
Und ich such mir 'nen Wolf um mit StringFormat und StringAlignments zurecht zu kommen...
Laut MS sollte das ja auch ganz einfach gehen, neues Stringformat kreieren beide StringAlign und StringLineAlignment auf #StringAlignmentCenter setzen und fertig...
So funktioniert es - Na klar...
Manchmal sieht man den Wald vor Bäumen nicht...Gut, das es mehrere Förster gibt

Und ich such mir 'nen Wolf um mit StringFormat und StringAlignments zurecht zu kommen...
Laut MS sollte das ja auch ganz einfach gehen, neues Stringformat kreieren beide StringAlign und StringLineAlignment auf #StringAlignmentCenter setzen und fertig...