Entwickler-Ecke

Multimedia / Grafik - Text um Mittelpunkt rotieren


Delete - So 10.03.19 08:33
Titel: Text um Mittelpunkt rotieren
- Nachträglich durch die Entwickler-Ecke gelöscht -


Chiyoko - Di 12.03.19 18:05

Hallo,

wenn du den Text schon per GDI renderst, muss die Drehung mit Delphi gemacht werden?

Rotating lines of text [https://docs.microsoft.com/en-us/windows/desktop/gdi/rotating-lines-of-text]

Ansonsten wird doch üblicherweise auf eine Bitmap oder ein Rectangle/Panel etc gezeichnet und dann gedreht.


Delete - Mi 13.03.19 14:44

- Nachträglich durch die Entwickler-Ecke gelöscht -


Chiyoko - Mi 13.03.19 15:04

Und wenn du den Formatparameter DT_CENTER setzt, anstatt wilde Berechnungen anzugehen?
Kann den Code momentan nicht testen, daher nur Hinweise.


Delete - Mi 13.03.19 15:09

- Nachträglich durch die Entwickler-Ecke gelöscht -


Fiete - Fr 15.03.19 18:43

Moin Frühlingsrolle,
habe eine Demo gefunden: Kochbuch Delphi6 von Doberenz.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure DC_TextOut(x,y,winkel,groesse:integer;txt:string);
var hfont, fontold : integer;
    dc             : hdc;
    fontname       : string;

begin
     if length(txt)= 0 then exit;
     dc := Screen.ActiveForm.Canvas.handle;
     SetBkMode(dc,transparent);
     fontname := Screen.ActiveForm.Canvas.font.name;
     hfont   := CreateFont(-groesse,0,winkel*10,0,fw_normal,0,0,0,1,4,$10,2,4,PChar(fontname));
     fontold := SelectObject(dc,hfont);
     TextOut(dc,x,y,PChar(txt),length(txt));
     SelectObject(dc, fontold);
     DeleteObject(hfont);
end;

procedure TForm1.FormResize(Sender: TObject);
var i,n,x,y : integer;
begin
    refresh;
    n := 60;
    i := 0;
    x := clientwidth div 2;
    y := clientheight div 2;
    while i < 500 do begin
        If n > 10 Then Dec(n,2Else If n > 2 Then dec(n);
        DC_textout(x, y, i, n, '         rotierender Text');
        Inc(i,15);
    end;
end;


Mußt Du mal testen.
Gruß Fiete


Delete - Fr 15.03.19 19:16

- Nachträglich durch die Entwickler-Ecke gelöscht -


Chiyoko - Mo 18.03.19 10:21

In C# reicht es aus, die Transformationsmatrix zu ändern.
Da auch andere Sprachen auf s selbe System zugreifen, sollte es bei Delphi ja was ähnliches geben.

Graphics.RotateTransform() / TranslateTransform()


Delete - Fr 22.03.19 16:00

- Nachträglich durch die Entwickler-Ecke gelöscht -