Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   schrift-details (https://www.delphipraxis.net/210927-schrift-details.html)

milurt 30. Jun 2022 10:34

schrift-details
 
bei docs.microsoft.com steht nicht wie ich die
schriftgrösse und schriftart ändern kann, wie arial,
um sie bei TextOut zu verwenden.
durch prozedurenamen von windows dlls oder in tpu in
von embarcadero.

BerndS 30. Jun 2022 10:40

AW: schrift-details
 
Sofern die Quellen der VCL vorhanden sind, einfach da mal schauen, wie es die Klasse TCanvas macht.

milurt 30. Jun 2022 10:47

AW: schrift-details
 
die haben mich aber hier rübergeschickt.

peterbelow 30. Jun 2022 11:00

AW: schrift-details
 
Versuchst Du, per GDI in einem Fenster zu zeichnen, ohne die VCL zu benutzen?
Das ist ein Job für Masochisten. 8-)

Du mußt zuerst einen font erzeugen, dazu gibt es API-Funktionen wie CreateFont, CreateFontIndirect oder CreateFontIndirectEx (beides in A und W-Versionen, die Delphi windows-Unit verwendet die W-Versionen, da die den Font-Namen als Unicode-String erwarten). Die Funktionen geben ein Font Handle (HFONT) zurück, das man dann in einen device context (HDC) selectiert (SelectObject), um es dann in Funktionen wie TextOut zu verwenden. Die Text-Farbe ist dabei die momentan gesetzte Vordergrundfarbe, und die wird durch die Farbe des selektierten Pens bestimmt.
Und nicht vergessen: alles, was man explizit an GDI-Objekten erzeugt und in einen device contect selektiert muß man auch wieder aus diesem herausholen und dann zerstören (DeleteObject)...

Delphis TCanvas verpackt diesen ganzen Aufwand sehr komfortabel und ist sehr viel einfacher zu nutzen.

himitsu 30. Jun 2022 11:27

AW: schrift-details
 
[OT] statt einem neuen Post, wäre es besser gewesen, wenn du deinen Post gemeldet hättest und gebeten ihn zu verschieben :zwinker:
Aber zumindesten sollte man dann im neuen Post mit erwähnen, wo es los ging (weil dort oft noch was steht, was dann hier als Infos fehlt).

Verlinkung zum ersten Post --->>> https://www.delphipraxis.net/210906-...t-details.html

KodeZwerg 30. Jun 2022 12:29

AW: schrift-details
 
Per Non-VCL (WinAPI) macht man es so:

Delphi-Quellcode:
//global
var
   hFont: Integer;

//nachdem du deine Klasse und Controls erzeugt hast, vor der Message-Loop, kommt das:
  hFont := CreateFont(-13, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');
// damit ist in "hFont" alles hinterlegt was man benötigt.
// nun muss man den Controls noch mitteilen, hey du, nutze bitte diese font
  if hFont <> 0 then
  begin
    SendMessage(DeineControlID, WM_SETFONT, hFont, 0);
  end;
// um es letzten endes auch darzustellen
 UpdateWindow(Handle);


// nach der message loop auch wieder bereinigen!
    DeleteObject(hFont);

Rolf Frei 30. Jun 2022 12:58

AW: schrift-details
 
Kannst du uns mal aufklären was du eigentlich genau machen willst? Ein Canvas bekommst du von jedem Element das ein Canvas bereit stellt. TForm.Canvas, TPanel.Canvas,TGraphicControl.Canvas, etc. Desweiteren kannst du auch ein eigenes Canvas erstellen und diesem deinen eigenen HDC zuweisen. Wieso willst du das diekt per Win32 SDK machen und nicht die Delphi Klassen nuntzen, die deses schon längest implementiert haben? Diese Klassen nutzen auch die Win32 SDK nur kannst du es viel einfacher nutzen und musst dich nicht mühsam mit der Win SDK herumschlagen. Dieser Job wurde vor vielen Jahren schon Borland (mindestens seit Delphi 1) für dich gemacht.

milurt 30. Jun 2022 17:43

AW: schrift-details
 
himitsu, wenn ich forum-rübergeschickt wurde, werden die sich nicht mehr interessieren.
rolf frei, wenn es schon so viele canvas gibt, welchen soll ich benutzen, ich weiss immer
noch nicht woher canvas kommt oder einzufügen ist (tpu,classe).
sowas wie eine createfont-procedure, die einfach in den text einzufügen ist, gefällt mir
am besten, aber ich wollte nicht kreieren sondern arial,... nutzen und die schriftgrösse
setzen. die farbe habe ich schon.

Rolf Frei 30. Jun 2022 18:25

AW: schrift-details
 
Leider hast du uns immernoch nicht aufgeklärt was du genau machen willst. Ist das deine Absicht, alles selber direkt per Win32 SDK zu machen und wenn ja wieso? Was ist falsch mit der Delphi Implementation der Win32 Objekte? Oder bist du einfach neu in Delphi und weisst nicht wie vorzugehen ist um dein Ziel zu erreichen? Sag uns was du genau machen willst und ob es da wirklich unbedingt direkte Win32 Programmierung sein muss und du keine Delphi Objekte, die das bereits alles gekapselt haben, nutzen kannst/willst.

Das Canvas ist eine Delphi Objekt, das die Win32 Grafikzeichenfläche in einer sehr mächtigen Delphi Klasse gekapselt hat. Wenn du irgnedwas direkt auf eine Delphi Form zeichnen willst, kannst du einfach das Canvas der TForm Klasse nutzen. Viel einfacher geht es kaum noch.

milurt 30. Jun 2022 20:03

AW: schrift-details
 
ich habe doch gesagt
Zitat:

sowas wie eine createfont-procedure, die einfach in den text einzufügen ist, gefällt mir
am besten,
und rolf frei du hast mir immer noch nicht gesagt welches object und unit das ist.
also die frage: was nützen mir all die prozeduren, die ich nicht brauche, wenn das
in die exe sogar mitgelinkt werden? und was ich alles herum programmieren muss um
dieses dann auch zu kriegen ist vielleicht zu viel.


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

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