Buttons mit vertikaler Schrift
-
- Beiträge: 92
- Registriert: So 26. Aug 2007, 20:35
- OS, Lazarus, FPC: Win7, Laz 1.2.6, FPC 2.6.4, SVN 33306, ZEOS 7.1.4
- CPU-Target: 32Bit
- Wohnort: Helmstedt
- Kontaktdaten:
Hallo Michael, das kann doch so schwer nicht sein?
Ist der Button erst breit und wie im Standard beschriftet, so dreht sich der Button jetzt auf die Schmalseite (90° gegen den Uhrzeigersinn).
Und die Schrift mit!
Was du in deinem Bild darstellst ist doch ganz anders als von SKFink oder?
Gruß
Peter
Ist der Button erst breit und wie im Standard beschriftet, so dreht sich der Button jetzt auf die Schmalseite (90° gegen den Uhrzeigersinn).
Und die Schrift mit!
Was du in deinem Bild darstellst ist doch ganz anders als von SKFink oder?
Gruß
Peter
Zeiterfassung, einfach gerechter!
-
- Beiträge: 65
- Registriert: Sa 27. Okt 2007, 13:27
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Seebergen
Hallo!
Bringt's jetzt was wenn ich sage:
Wo's so'n Button zum Dowload gibt ...?
Zum Drehen ...?
Mit Sourcecode ...?
Aber eben für Delphi.
Unter Umständen kann ja die Technik zum Drehen als Vorlage dienen.
Der Button kann hier geloaded werden:
Info: http://sunsite.informatik.rwth-aachen.d ... but112.zip" onclick="window.open(this.href);return false;
Und sieht so aus. (siehe Anhang)
Tschüsss !
Bringt's jetzt was wenn ich sage:
Wo's so'n Button zum Dowload gibt ...?

Zum Drehen ...?

Mit Sourcecode ...?

Aber eben für Delphi.

Unter Umständen kann ja die Technik zum Drehen als Vorlage dienen.
Der Button kann hier geloaded werden:
Info: http://sunsite.informatik.rwth-aachen.d ... but112.zip" onclick="window.open(this.href);return false;
Und sieht so aus. (siehe Anhang)
Tschüsss !
Haste den mal angeschaut?Euklid hat geschrieben: Dürfte doch eigentlich keine größeren Probleme bereiten, den SourceCode auf Lazarus zu portieren?
Ich hab mal eine auf OPBitmap und TBitBtn basierende Lösung im Screenshot.
Falls jemand den Code haben möchte, bitte melden.
- Dateianhänge
-
- rotbut.png (5 KiB) 1707 mal betrachtet
Auf Anfrage von skfink:
Unten der Code.
Das ist nur eine Funktion, welche bei normalen BitBtn den Text dreht.
(nur heute abend so hingehackt, sollte aber funzen)
OpBitmap und die OpImgLib hatte ich mal hier gepostet.
http://www.lazarusforum.de/viewtopic.php?t=434" onclick="window.open(this.href);return false;
http://www.lazarusforum.de/viewtopic.php?t=1383" onclick="window.open(this.href);return false;
Hintergrundfarbe, Font-Eigenschaften und Farbe werden vom BitBtn übernommen.
Unten der Code.
Das ist nur eine Funktion, welche bei normalen BitBtn den Text dreht.
(nur heute abend so hingehackt, sollte aber funzen)
OpBitmap und die OpImgLib hatte ich mal hier gepostet.
http://www.lazarusforum.de/viewtopic.php?t=434" onclick="window.open(this.href);return false;
http://www.lazarusforum.de/viewtopic.php?t=1383" onclick="window.open(this.href);return false;
Hintergrundfarbe, Font-Eigenschaften und Farbe werden vom BitBtn übernommen.
Code: Alles auswählen
...
implementation
uses opbitmap, opbitmapformats, OpImgLib, Math;
procedure RotatedTextBitBtn(BB: TBitBtn; AText: UTF8String);
var Bmp: TBitmap; OPP1, OPP2: TOPPicture;
ext: TSize;
Strm: TMemoryStream;
w, h: integer;
clBG:TColor;
begin
if Length(AText) > 0 then
begin
clBG:=BB.Color;
Bmp := TBitmap.Create;
Strm := TMemoryStream.create;
Bmp.Canvas.Font.Assign(BB.Font);
ext := Bmp.Canvas.TextExtent(AText);
Bmp.Width := ext.cx;
Bmp.Height := ext.cy;
Bmp.Canvas.Brush.Color := clBG;
Bmp.Canvas.FillRect(0, 0, Bmp.Width, Bmp.Height);
Bmp.Canvas.TextOut(0, 0, AText);
Bmp.SaveToStream(Strm);
Strm.Position := 0;
OPP1 := TOPPicture.Create;
OPP2 := TOPPicture.Create;
OPP1.LoadFromStream(Strm);
OPP2.Bitmap.Height := Max(OPP1.Bitmap.Height, OPP1.Bitmap.Width);
OPP2.Bitmap.Width := Max(OPP1.Bitmap.Height, OPP1.Bitmap.Width);
OPP2.Bitmap.Canvas.Brush.Color := clBG;
OPP2.Bitmap.Canvas.FillRect(Rect(0, 0, OPP2.Bitmap.Width, OPP2.Bitmap.Height));
OPP2.Bitmap.Canvas.Draw((OPP2.Bitmap.Width - ext.cx) div 2, (OPP2.Bitmap.Height - ext.cy) div 2, OPP1.Bitmap);
RotateBitmap_ads(OPP2.Bitmap, OPP1.Bitmap, Point(OPP2.Bitmap.Width div 2, OPP2.Bitmap.Height div 2), 270, clBG);
OPP2.Bitmap.Width := ext.cy;
OPP2.Bitmap.Height := ext.cx;
BB.Width := ext.cy + 15;
BB.Height := ext.cx + 20;
OPP2.Bitmap.Canvas.FillRect(Rect(0, 0, OPP2.Bitmap.Width, OPP2.Bitmap.Height));
w := (OPP1.Bitmap.Width - ext.cy) div 2;
h := (OPP1.Bitmap.Height - ext.cx) div 2;
OPP2.Bitmap.Canvas.CopyRect(
Rect(0, 0, OPP2.Bitmap.Width, OPP2.Bitmap.Height),
OPP1.Bitmap.Canvas,
Rect(w, h, w + ext.cy, h + ext.cx));
Strm.Position := 0;
OPP2.SaveToStream(Strm, 'image/bmp');
OPP1.Free;
OPP2.Free;
Strm.Position := 0;
BB.Glyph.LoadFromStream(Strm);
Strm.free;
Bmp.free;
end;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
RotatedTextBitBtn(BitBtn1, BitBtn1.Caption);
BitBtn1.Caption := '';
RotatedTextBitBtn(BitBtn2, BitBtn2.Caption);
BitBtn2.Caption := ''
end;