Font Antialiasing
Font Antialiasing
Hi!
Es geht um folgendes:
Ich verwende ne Grafik-Engine, die, wie so ziemlich jede andere auch, Windows Schriftarten laden kann. Allerdings unterstützt sie dabei kein AA.
Meine Frage wäre nun, wie ich mir Zugriff auf den über die WinAPI geladenen Font verschaffen kann, um so das AA zu aktivieren.
Bin für jede Hilfe dankbar!
Es geht um folgendes:
Ich verwende ne Grafik-Engine, die, wie so ziemlich jede andere auch, Windows Schriftarten laden kann. Allerdings unterstützt sie dabei kein AA.
Meine Frage wäre nun, wie ich mir Zugriff auf den über die WinAPI geladenen Font verschaffen kann, um so das AA zu aktivieren.
Bin für jede Hilfe dankbar!
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Font Antialiasing
meines Wissens liegt es nicht daran, wie eine Schriftart geladen wird, sondern an der verwendeten Drawing-Routine.
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: Font Antialiasing
Vielleicht hilft dir das weiter, aber wenn ich lese was Kaeru geschrieben hat, befürchte ich das es das nicht wird, ich poste es mal trotzdem(ist fast 2 Jahre alt und aus dem englischen Forum von Trond):
http://www.purebasic.fr/english/viewtop ... wrapheader
Code: Alles auswählen
#DEFAULT_QUALITY
#DRAFT_QUALITY
#PROOF_QUALITY
#NONANTIALIASED_QUALITY = 3
#ANTIALIASED_QUALITY = 4
#CLEARTYPE_QUALITY = 5
#CLEARTYPE_NATURAL_QUALITY = 6
OpenWindow(0, 0, 0, 512, 384, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
LF.LOGFONT
LF\lfHeight = 34
LF\lfWidth = 0
LF\lfEscapement = 0
LF\lfOrientation = 0
LF\lfWeight = #FW_DONTCARE
LF\lfItalic = 0
LF\lfUnderline = 0
LF\lfStrikeOut = 0
LF\lfCharSet = #DEFAULT_CHARSET
LF\lfOutPrecision = #OUT_DEFAULT_PRECIS
LF\lfClipPrecision = #CLIP_DEFAULT_PRECIS
LF\lfQuality = #NONANTIALIASED_QUALITY
LF\lfPitchAndFamily = #DEFAULT_PITCH | #FF_DONTCARE
PokeS(@LF\lfFaceName[0], "Tahoma")
Font = CreateFontIndirect_(@LF)
Debug Font
TextGadget(0, 10, 10, 300, 30, "Welcome to Pixel Palace")
SetGadgetFont(0, Font)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEverPB 4.00 | Windows XP Home SP3
Re: Font Antialiasing
@KG:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
fdwQuality Parameter: ANTIALIASED_QUALITY
@Rebon:
Naja, in dem von dir geposteten Code wird ja ein neuer Font erstellt bzw. geladen. Ich hingegen will ja den von der Grafik-Engine bereits geladenen Font irgendwie manipulieren. Wenn ich Glück habe, erwartet die SetFont-Funktion der Engine das OS-handle eines Fonts...moment, ich probiers mal aus...
Edit:
Ne, funktioniert leider nicht. Die LoadFont-Funktion der Engine gibt nicht das OS-handle zurück.
Hm, das was ich vorhabe geht dann wohl so in Richtung "Hack", was?
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
fdwQuality Parameter: ANTIALIASED_QUALITY
@Rebon:
Naja, in dem von dir geposteten Code wird ja ein neuer Font erstellt bzw. geladen. Ich hingegen will ja den von der Grafik-Engine bereits geladenen Font irgendwie manipulieren. Wenn ich Glück habe, erwartet die SetFont-Funktion der Engine das OS-handle eines Fonts...moment, ich probiers mal aus...
Edit:
Ne, funktioniert leider nicht. Die LoadFont-Funktion der Engine gibt nicht das OS-handle zurück.
Hm, das was ich vorhabe geht dann wohl so in Richtung "Hack", was?
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Font Antialiasing
interessant, also findet das bei der Objekterzeugung statt... jedenfalls bei GDI
verwendet denn deine obskure Engine überhaupt diese API?
die damit erzeugte Font ist dann ein GDI-Objekt, das hat doch mit DX/oGL nix zu tun, oder wie seh ich das?
ach btw.. wenn du nicht sagst, welche Engine du benutzt, ist die Wahrscheinlichkeit doch eher gering, dass dir jemand helfen kann, meinst du nicht?
verwendet denn deine obskure Engine überhaupt diese API?
die damit erzeugte Font ist dann ein GDI-Objekt, das hat doch mit DX/oGL nix zu tun, oder wie seh ich das?
ach btw.. wenn du nicht sagst, welche Engine du benutzt, ist die Wahrscheinlichkeit doch eher gering, dass dir jemand helfen kann, meinst du nicht?
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: Font Antialiasing
Geht um das Blitz3D SDK, und ja, es verwendet diese API. Der Text dürfte auch über GDI gezeichnet werden.
Ich hab mal ausprobiert, selbst nen Font zu laden und einen Text über GDI auf den Frontbuffer zu zeichnen. Funktioniert auch eigentlich, nur flackerts leider (hat auch anscheinend nichts mit der Double-Buffer-Methode zu tun).
Zu diesem Thema habe ich übrigens auch das hier entdeckt: http://www.blitzbasic.com/Community/pos ... opic=68020
Da schildert jemand dasselbe, obengenannte Problem.
Mit MixailVs Trick kann man sich u.a. direkten Zugang zum BackBuffer verschaffen. Allerdings bekomme ich bei
immer ein IMA. Kompiliert man das ganze als DLL und benutzt die Methode direkt in Blitz3D, scheints zu funktionieren. Liegt wohl irgendwie an den Offsets...
Nur komisch, wieso dann funktioniert.
Ich hab mal ausprobiert, selbst nen Font zu laden und einen Text über GDI auf den Frontbuffer zu zeichnen. Funktioniert auch eigentlich, nur flackerts leider (hat auch anscheinend nichts mit der Double-Buffer-Methode zu tun).
Zu diesem Thema habe ich übrigens auch das hier entdeckt: http://www.blitzbasic.com/Community/pos ... opic=68020
Da schildert jemand dasselbe, obengenannte Problem.
Mit MixailVs Trick kann man sich u.a. direkten Zugang zum BackBuffer verschaffen. Allerdings bekomme ich bei
Code: Alles auswählen
*dd7surf\ReleaseDC(hDC)
Nur komisch, wieso dann
Code: Alles auswählen
*dd7surf\GetDC(@hDC)-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Font Antialiasing
ganz spontan: sicher dass Release den Wert und nicht den pointer auf den Wert haben will?X0r hat geschrieben:Allerdings bekomme ich beiimmer ein IMA. Nur komisch, wieso dannCode: Alles auswählen
*dd7surf\ReleaseDC(hDC)funktioniert.Code: Alles auswählen
*dd7surf\GetDC(@hDC)
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: Font Antialiasing
Ja, bei Blitz3D selbst funktioniert es sogar. Nur halt beim SDK nicht.
