Text Drehen ?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Genau, und die LCLType implementiert Typen die es eigentlich nur unter Windows gibt für andere Betriebsysteme / Widgetsets.
Finde ich eigentlich ein bisschen Schade, dass das so gemacht ist.
Ich meine, was hat GTK, Carbon etc. mit WinApi zu tun?
Es wäre doch schöner, wenn TFont z.B. diese Dinge zur Verfügung stellen würde, in diesem Fall z.B. das Property "Angle" oder so.

Ist natürlich schon klar, dass es wegen der Delphi-Kompatibilität so ist.
Aber diese Dinge sind irgendwie so versteckt, und man hat immer den Eindruck, das funktioniere sowieso nicht unter anderen Widgetsets und
muss auf MSDN nachschauen, wie man GTK programmiert ;-)

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Beitrag von Bora4d »

Ich hatte mit delphi eine componente entwickelt mit vertikal Text vielleicht könnt damit etwas anfangen.

Code: Alles auswählen

{Die Funktion ist von jemand anderem.(Name unbekannt). 
============================================================================
  CreateRotatedFont  ACHTUNG:Font MUSS .TrueTypeFONT SEIN!
  Date: 2000-06-22
  Description: Creates rotated font, returns handle to it
  Parameters:
    F: TFont, where to copy styles
    Angle: Integer, font angle
  ---------------------------------------------------------------------------- }
function CreateRotatedFont(F: TFont; Angle: Integer): hFont;
var
  LF : TLogFont;
begin
  FillChar(LF, SizeOf(LF), #0);
  with LF do
  begin
    lfHeight := F.Height;
    lfWidth := 0;
    lfEscapement := Angle*10;
    lfOrientation := 0;
    if fsBold in F.Style then
      lfWeight := FW_BOLD
    else
      lfWeight := FW_NORMAL;
    lfItalic := Byte(fsItalic in F.Style);
    lfUnderline := Byte(fsUnderline in F.Style);
    lfStrikeOut := Byte(fsStrikeOut in F.Style);
    lfCharSet := DEFAULT_CHARSET;
    StrPCopy(lfFaceName, F.Name);
    lfQuality := DEFAULT_QUALITY;
 
    lfOutPrecision := OUT_DEFAULT_PRECIS;
    lfClipPrecision := CLIP_DEFAULT_PRECIS;
    case F.Pitch of
      fpVariable: lfPitchAndFamily := VARIABLE_PITCH;
      fpFixed: lfPitchAndFamily := FIXED_PITCH;
    else
      lfPitchAndFamily := DEFAULT_PITCH;
    end;
  end;
  Result := CreateFontIndirect(LF);
end;
Verwendung:

Code: Alles auswählen

Canvas.Font.Handle := CreateRotatedFont(Canvas.Font, 90);
Canvas.TextRect(Rect,Rect.left, CapRect.top, caption);
Dateianhänge
Vorschau
Vorschau

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Finde ich eigentlich ein bisschen Schade, dass das so gemacht ist.
Ich meine, was hat GTK, Carbon etc. mit WinApi zu tun?
@Bora4d Danke, du hast die Perfekte Antwor für Theo geliefert ;)
90% Der Delphi "Programmierer" suchen nach irgend nem Codeschnipsel ausm Netz und die meissen Delphi Programme bestehen zu 60% aus Copy & paste und zu 20% Code vom Form Designer.
Ich fänds auch schön wenn zumindest zusätzlich LCL alternativen geschaffen würden aber die meissten Leute werden Sie nichtmal wahrnehmen. Ein Hauptgrund dafür wird auch die Hilfe sein, in Delphi hab ich noch ziemlich oft reingeschaut die Lazarus Hilfe ist zwar in grundzügen da aber um an die Qualität der Delphi Hilfe ranzukommen ists noch ein laaaaanger Weg, wenn das überhaupt mal geschafft wird.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben: Ich fänds auch schön wenn zumindest zusätzlich LCL alternativen geschaffen würden aber die meissten Leute werden Sie nichtmal wahrnehmen. Ein Hauptgrund dafür wird auch die Hilfe sein, in Delphi hab ich noch ziemlich oft reingeschaut die Lazarus Hilfe ist zwar in grundzügen da aber um an die Qualität der Delphi Hilfe ranzukommen ists noch ein laaaaanger Weg, wenn das überhaupt mal geschafft wird.
Das Glaube ich nicht unbedingt. Wenn du in Code-insight sehen würdest, dass es es eine "Winkel" Eigenschaft in TFont gibt, würdest du wohl kaum nach Schnippseln suchen.
Ausserdem ist die Hilfe von der du sprichst auch nicht die eigentliche Delphi Hilfe, sondern die Win32 Hilfe. Da kannst du genauso gut auf MSDN rumsurfen.
Wenn ich aber keine Möglichkeit habe, z.B. den Text plattforumübergreifend ohne Winapi-"Mimikry" zu drehen, wird entsteht ein unnötiger Zwitter-Code aus LCL, Winapi und womöglich noch ein bisschen ifdef GTK etc.. Ein paar WinMessages hier und ein paar Events dort.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nein ich meinte schon die VCL Hilfe vom Delphi. Ich hab damals weniger im Netz nach Lösungen gesucht und eher mal nen Blick in die Hilfe geworfen. heute schau ich meisst erst in die entsprechenden LCL Units bzw Klassen obs Eigenschaften dafür gibt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

{
Christian wie stellst du dir das vor mit der LCL-Altnative wegen der WinAPI ?
Es muss doch erst eine Gemeinsame Schnittstelle gefunden werden oder nicht ?

Wobei ich frage mich was GKT1 wirklich alles kann, was noch nicht eingebaut ist...

Aber ich stimme Theo zu, schöner währe es wirklich wenn das TFontObject einfach eine entsprechende Eigenschafte(n) dafür hätte...

Theo könntest du noch ein Bild davon hochladen wie es bei dir aussieht ?
Im Moment bekomme ich GTk2 nicht richtig Kompeliert.:
(project1:3258): Pango-CRITICAL **: pango_context_load_font: assertion `pango_font_description_get_family (desc) != NULL' failed

(project1:3258): Pango-CRITICAL **: pango_font_map_load_fontset: assertion `pango_font_description_get_family (desc) != NULL' failed

(project1:3258): Pango-CRITICAL **: pango_fontset_foreach: assertion `PANGO_IS_FONTSET (fontset)' failed

(project1:3258): Pango-CRITICAL **: pango_font_map_load_fontset: assertion `pango_font_description_get_family (desc) != NULL' failed

(project1:3258): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed

(project1:3258): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion `G_IS_OBJECT (object)' failed

(project1:3258): Pango-CRITICAL **: pango_fontset_foreach: assertion `PANGO_IS_FONTSET (fontset)' failed

(project1:3258): Pango-CRITICAL **: pango_fontset_foreach: assertion `PANGO_IS_F
}
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Mit Bora4d habe ich es hinbekommen, leider nur unter GTK2... schade... unter GTk1 geht das so nicht....
Bei meinem Code bekomme ich immer die Ausgaben...
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

GTK2 SynEdit Träge?

Beitrag von pluto »

Hallo,
ich habe heute mal die Lazarus-IDE auf GTK2 umgestellt. Sieht ja alles recht nett und schön aus.
Aber beim code schreiben steigt die CPU-Last spürbar an. Bei mir liegt sie auf ca 30%... beim schreiben.

Und beim schreiben verschwindet bzw. scheint der Cursor zu blicken....

Diese Verhalten habe ich bisher nur bei den SynEdit Komponenten gesehen. Wobei der Lazarus-Code Editor basiert ja intern auf SynEdit....
kann sich jemand erklären warum das so verhalten wie oben beschrieben nur bei GTK2 eintritt ?

Ich würde GTk2 gerne behalten, z.b. sind jetzt auch die Öffnen und Speicher Dialoge besser....und es geht auch Vertikal schrift *G* und sowas halt....
MFG
Michael Springwald

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Beitrag von Bora4d »

Tut mir leid dass ich euch keine LCL-Alternative bieten kann. Ich bin neu bei Lazarus, programmiere auch sehr wenig zur Zeit, ich spiele damit nur herum. Ich muß euere Forum loben. Ich habe die Entwicklung mit FP+Lazarus immer verfolgt aber nie so richtig verwendet, dank euch "spiele" ich mit Lazarus jetzt mehr. Ihr habt hier gute Infos drüber.

@Pluto wieso hast du die Lazarus-IDE auf GTK2 umgestellt. Du kannst auch so GTK2 programme damit erstellen. Ich hatte mal auf Lazarus-Foren/Infos gelesen, dass sie zur Zeit Probleme mit Lazarus-IDE und GTK2 haben und dass sie dran arbeiten.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Warum stört dich das bisschen CPU Last ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

etwas ?
naja das stört mich einfach... ist für mich nicht nachvollziehbar...
Bei GTK1 wahr das nicht so...
Meistens habe ich Lazarus oben und schreibe damit auch viel Code... Also währe es fast eine Dauerbelastung die nicht sein muss um bedingt.... darum.

Mag sein das es dir und anderen nix außmacht wenn beim schreiben die CPU last hoch geht... Allerdings habe ich noch andere Seltsame "sachen" erlebt.... aber ich lasse es erstmal eine Zeitlang auf GTK2...
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Na, man kann das ja auch noch weiter denken...je mehr CPU-Last ein Programm produziert, desto mehr Energie benötigt der Prozessor und wir wären wieder im anderen Thread ;).

Wir könnten dann dran schreiben "Energiesparend, weil GTK" ;)
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja aber das trifft auch nur wieder auf GTk1 zu *G* aber nicht auf GKT2 !*leider*, aber ich Verstehe auch nicht warum das so ist !

Könntest du ja mal beim "Forum Treffen" ansprechen oder ?
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Ja aber das trifft auch nur wieder auf GTk1 zu *G* aber nicht auf GKT2 !*leider*, aber ich Verstehe auch nicht warum das so ist !
Denk doch mal nach. Gedrehten Text, Anti-aliased Fonts (feine, nicht gepixelte Fonts)....
GTK2 bietet einfach mehr bei der Textausgabe als GTK1. Das braucht natürlich mehr Rechenzeit.

Siehe auch hier

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Naja, aber gleich so viel mehr ? Das kann ich nicht glauben ! Wobei bei SynEdit wird sowas doch gar nicht genutzt... oder doch ? Warum wird das dann nicht abgeschaltet ?
MFG
Michael Springwald

Antworten