Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateFontIndirect - Seltsames Phänomen (https://www.delphipraxis.net/100994-createfontindirect-seltsames-phaenomen.html)

Neutral General 6. Okt 2007 17:15


CreateFontIndirect - Seltsames Phänomen
 
Hi,

Also es klappt generell schon. Nur nicht bei jeder Schriftart.. Wenn ich als Schriftart 'MS Sans Serif' angebe dann funktionierts nicht. Also die Schriftgröße wird ignoriert und alles. Ganz komisch...

Gruß
Neutral General

Luckie 6. Okt 2007 18:01

Re: CreateFontIndirect - Seltsames Phänomen
 
Jetzt kann man nur raten. Eion bißchen Code könnte aber enorm weiterhelfen.

Hawkeye219 6. Okt 2007 18:27

Re: CreateFontIndirect - Seltsames Phänomen
 
Hallo,

Zitat:

Zitat von Luckie
Jetzt kann man nur raten.

Dann tue ich das mal: Neutral General möchte einen Text gedreht ausgeben. Das funktioniert aber mittels Windows-API nur bei TrueType-Schriftarten - MS Sans Serif gehört nicht dazu.

Gruß Hawkeye

Neutral General 6. Okt 2007 19:08

Re: CreateFontIndirect - Seltsames Phänomen
 
Zitat:

Zitat von Hawkeye219
Hallo,

Zitat:

Zitat von Luckie
Jetzt kann man nur raten.

Dann tue ich das mal: Neutral General möchte einen Text gedreht ausgeben. Das funktioniert aber mittels Windows-API nur bei TrueType-Schriftarten - MS Sans Serif gehört nicht dazu.

Gruß Hawkeye

Döödööööö... falsch :stupid:

Hab ne eigene TFont Klasse..

Delphi-Quellcode:
// Bei jeder Änderung an FFontData (: TLogFont)
procedure TFont.Changed;
begin
  if ffnt <> 0 then // ffnt: HFONT
    DeleteObject(ffnt);
  ffnt := CreateFontIndirect(fFontData);
  if FParent <> 0 then
    SendMessage(FParent,WM_SETFONT,wparam(ffnt),lparam(true));
end;

// Fontname Set-Procedure
procedure TFont.SetName(const Value: String);
begin
  StrCopy(fFontData.lfFaceName,PChar(Value));
  Changed;
end;
Setzt man nun AFont.Name := 'MS Sans Serif' dann wird erstmal die Schriftart nicht geändert (glaub ich... ka..) aber jedenfalls kann man die Schriftgröße nichtmehr ändern...

Delphi-Quellcode:
procedure TFont.SetSize(const Value: Integer);
begin
  fFontData.lfHeight := -MulDiv(Value, GetDeviceCaps(GetDC(FParent), LOGPIXELSY), 72);
  Changed;
end;
Gruß
Neutral General

Rastaman 6. Okt 2007 19:26

Re: CreateFontIndirect - Seltsames Phänomen
 
Folgendes funktioniert:

Delphi-Quellcode:
CreateFont(50, 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, 'MS Sans Serif');
Je nachdem wie der erste Wert, also hier die 50, aussieht, verändert sich die Größe der ausgegebenen Schrift.
Compiler: VC++ 6.0 :wink:

Hawkeye219 6. Okt 2007 19:35

Re: CreateFontIndirect - Seltsames Phänomen
 
Zitat:

Zitat von Neutral General
Döödööööö... falsch

Möglicherweise ist das nicht mein Tag - die gezogenen Lottozahlen sahen jedenfalls anders aus als meine.

Es könnte aber dennoch daran liegen, daß du keine TrueType-Schriftart eingestellt hast. Die Bitmap-Schriftarten sind nämlich nicht in allen Größen verfügbar, wie du im Font-Dialog leicht überprüfen kannst.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz