Alternative zu GetFullTextExtent..?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

ich stehe vor dem Problem, dass ich für einen bestimmten Font die Höhe samt Descend benötige, bevor ich ein DC-Objekt anlege.

Gibt es eine Möglichkeit?

Danke schon mal....

Gruß
mutetella
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hilft wx.GraphicsContext.GetTextExtent?
MfG
HWK
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Nee, leider nicht, weil sowohl bein DC- wie auch bein GC-Objekt benötige ich ein wxWindow zum Instanziieren. Und genau da liegt das Problem. Bevor ich ein wxWindow erstelle möchte ich eine Setuproutine durchlaufen lassen, die mir alle nötigen Parameter, wie eben auch heigth und descent eines Font, erstellt. Aber ohne wxWindow kein DC/GC, ohne DC/GC keine TextExtend-Methoden.

Trotzdem danke....

Gruß
mutetella
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Erstell doch erst mal ein Dummy-Window, um die entsprechenden Werte des/der Fonts zu erhalten. Du brauchst es ja nicht anzuzeigen.
MfG
HWK
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ja, so werd' ich das wohl machen müssen. Gefällt mir halt nicht wirklich, ein Window zu erstellen, nur um an ein paar Werte zu kommen.... :(

Aber wenn's nicht anderst geht...

Gruß
mutetella
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Ich glaube, es gibt Schlimmeres. :)
MfG
HWK
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Für alle, die ein ähnliches Problem haben:

Bin durch Zufall darauf gestoßen, dass sich wxBufferedDC-Instanzen auch ohne Übergabe eines Window erstellen lassen. Lediglich ein Dummy-Bitmap wird benötigt. Beispiel:

Code: Alles auswählen

dummy = wx.EmptyBitmap(10, 10)
dc=wx.BufferedDC(None, dummy)
dc.GetFullTextExtend("BlaBla", font)
Demzufolge funktioniert natürlich auch:

Code: Alles auswählen

dummy = wx.EmptyBitmap(10, 10)
dc=wx.MemoryDC(dummy)
dc.GetFullTextExtend("BlaBla", font)

Ok, ist zwar immer noch 'ne Notlösung, aber fürs erste... :-)

Früher oder später werde ich wohl nicht daran herumkommen, mir für alle benötigten Fonts eine statische Liste mit den jeweiligen GetFullTextExtend-Rückgaben zu erstellen. Ich wüsste nach wie vor nicht, wie ich ohne Erstellung eines DC an diese Angaben komme.

Gruß
mutetella
Antworten