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/)
-   -   Image und CreateFont (https://www.delphipraxis.net/159811-image-und-createfont.html)

MacGuyver 13. Apr 2011 20:15

Image und CreateFont
 
Moin Leute :hi:

ich habe da ein Problem mit dem Zeichensatz. Ich möchte in meiner Konsolendarstellung den Zeichensatz so groß wählen, wie es am besten in das Fenster passt. Beim Drucken kann ich mittels CreateFont und SelectObject einen Zeichensatz meiner Wahl erstellen und verwenden. Nun möchte ich z.B. 8 Pixel breit und 12 Pixel hoch mit "Courier New" zeichnen.

Delphi-Quellcode:
var
  lCV : TCanvas;
  lHFont,
  lHFontOld : THandle;
  lFontname : string;


  lCV := ImageConsole.Canvas;


    lFontname := 'Courier New';
    lHFont:=CreateFont(lChHeight
                      ,lChWidth
                      ,0//Winkel
                      ,0
                      ,300
                      ,0
                      ,0
                      ,0
                      ,OEM_CHARSET
                      ,OUT_RASTER_PRECIS//OUT_TT_PRECIS//FF_Roman
                      ,CLIP_STROKE_PRECIS//$10
                      ,FIXED_PITCH//2
                      ,FF_MODERN
                      ,@lFontname[1]);
    lHFontOld := SelectObject(lCV.Handle,lHFont);
    lCV.TextOut(0,0,'Hallo');
    SelectObject(lCV.Font.Handle,lHFontOld);
    DeleteObject(lHFont);
Sieht soweit gut aus, leider wird mit einem anderen Zeichensatz gezeichnet. Ich habe mal nach "CreateFont Image" gesucht und nichts gefunden.

Kann mir jemand helfen?

EWeiss 13. Apr 2011 20:35

AW: Image und CreateFont
 
Kann man überhaupt in einer Konsole mit deinem angegebenen Font schreiben (zeichnen) ?
Glaube nicht!

Consolas..
Lucida Console
Rasterschriftart..

Versuchs mal damit ;)

gruss

MacGuyver 13. Apr 2011 20:41

AW: Image und CreateFont
 
Das gibts bei mir, oder bei OBI <grins>. Ich habe mir einen virtuellen Bildschirmspeicher programmiert wo ich auch Write und WriteLn hin umleite. Aus diesem Speicher möchte ich nun in ein Image meine eigene Konsole zeichnen. Leider klappt das mit der Zeichensatzwahl nicht. Mache ich das über Canvas.Font.Name kann ich nur eine Größe angeben, aber nicht Breite und Höhe frei in Pixel.

EWeiss 13. Apr 2011 20:46

AW: Image und CreateFont
 
Zitat:

Zitat von MacGuyver (Beitrag 1094925)
Das gibts bei mir, oder bei OBI <grins>. Ich habe mir einen virtuellen Bildschirmspeicher programmiert wo ich auch Write und WriteLn hin umleite. Aus diesem Speicher möchte ich nun in ein Image meine eigene Konsole zeichnen. Leider klappt das mit der Zeichensatzwahl nicht. Mache ich das über Canvas.Font.Name kann ich nur eine Größe angeben, aber nicht Breite und Höhe frei in Pixel.

Ah so keine reale Console wie cmd.exe
Das ist was anderes.

Hmm bei mir funktioniert das ..
Beispiel aus meinem ListBox Control

Delphi-Quellcode:
     FListFont := CreateFont(nPointSize, 0, 0, 0,
       FW_BOLD, 0, 0, 0, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
       CLIP_CHARACTER_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, FontName);

     DrawText(DC, Text, Length(Text), Rect, DT_CALCRECT or DT_EXPANDTABS or DT_NOPREFIX);
Ob es dir was bringt keine Ahnung ;)

PS:
Ach so vergessen..
Delphi-Quellcode:
FontName: PAnsiChar;
Nicht string ;)
gruss

MacGuyver 13. Apr 2011 22:19

AW: Image und CreateFont
 
Ich habe mein Vorhaben mal kurz auf PaintBox umgestellt. Nun wird der Zeichensatz von der Größe her richtig ausgegeben, aber nicht als OEM. So lasse ich dem Benutzer die Wahl der Schriftgröße und arbeite über Canvas.Font.Name und gut.


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

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