Entwickler-Ecke

Windows API - GDI Api für Textbreite


uall@ogc - Fr 06.05.05 13:51
Titel: GDI Api für Textbreite
wie heißt die GDI API mit der man die breite eines textest (pixeln) herausbekommt


Delete - Fr 06.05.05 16:15

Meinst du: Suche im MSDN GETTEXTEXTENTPOINT32?


uall@ogc - Fr 06.05.05 16:38

jo das war sie brauche sie für

http://www.uall.info/pics/textoutw3.JPG

ist mir auch erst später eingefallen das ich einfach
Canvas.TextWidth
mal debuggen sollte

danke


Delphi-Pro - Fr 06.05.05 16:56

Könntest du das Programm mal bitte anhängen das sieht nämlich ziemlich interessant aus :P
Delphi-Pro


BenBE - Fr 06.05.05 22:53

Wie witzig ... Hab heute erst genau die gleiche Funktion in der DSCal-Kompo optimiert und dabei festgestellt, dass sich der TCanvas.TextWidth-Aufruf mit folgendem SRC auf das Doppelte beschleunigen lässt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
Function ITextWidth(C: TCanvas; Var Text: String): Integer;
Var
    P: tagSize;
    CanvH: THandle;
Begin
    CanvH := Canvas.Handle;
    asm
        //GetTextExtentPoint32(C.Handle, PChar(Text), Length(Text), P);
        LEA     EAX, [P]
        PUSH    EAX
        MOV     EAX, DWORD PTR [Text]
        MOV     EAX, DWORD PTR [EAX]
        PUSH    DWORD PTR [EAX-$00000004]
        PUSH    EAX        
        PUSH    DWORD PTR [CanvH]
        CALL    GetTextExtentPoint32
        //Result := P.cx;
        MOV     EAX, DWORD PTR [P.tagSIZE.cx]
    end;
End;


@user profile iconuall@ogc: Kannst Du mal gucken, ob Du TCanvas.GetHandle irgendwie per ASM gecallt bekommst?


uall@ogc - Sa 07.05.05 13:06

da es hier um die API gings hab ichs hier mal geupped für die dies sich anschauen wollen

http://www.delphi-forum.de/viewtopic.php?p=249503#249503

@BenBE jo regeln wir über ICQ