![]() |
FMX bunte Linien zeichnen .... Random Farbwert
Liste der Anhänge anzeigen (Anzahl: 1)
was ich machen möchte ist klar, alles in FMX .
mit der auskommentierten Version kann ich zumindest mal einfarbige Linien zeichnen, wenn ich das Brush create in die schliefe einsetze und mir mit cardinal (Random(5000)) einen zufälligen Farbwert erzeugen möchte kommt nix mehr, das Zeichenblatt bleibt leer :-( ach ja , und Brush.Kind := bkSolid; bzw. Brush.Kind := Solid; lässt sich auch nicht compilieren .... FMX.graphics ist eingebunden
Delphi-Quellcode:
var
p1, p2: TPointF; i, j: Integer; Brush: TStrokeBrush; begin // sets the ends of the line to be drawed // Brush:=TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.red); // Brush.Thickness := 2; for i := 1 to 100 do begin Brush := TStrokeBrush.Create(TBrushKind.Solid, cardinal (Random(5000)) ); Brush.Thickness := 2; // Brush.Kind := bkSolid; p1 := TPointF.Create(2, 2); p2 := TPointF.Create(Random(400), Random(400)); localBMP.Canvas.BeginScene; image1.Bitmap.Canvas.Stroke.Color := Random(60000); // drawa the line on the canvas localBMP.Canvas.DrawLine(p1, p2, 1, Brush); localBMP.Canvas.EndScene; LoadBMP2GUI(nil); Brush.Free; end; end; |
AW: FMX bunte Linien zeichnen .... Random Farbwert
Lustigerweise heisst in FMX so ziemlich alles anders als gewohnt...klingt aber ähnlich, so daß man sich nie sicher sein kann, ob es nun stimmt. Aber ich male auch Linien in FMX, mal sehen, wie das bei mir zur Zeit umgesetzt ist.
Delphi-Quellcode:
Zu setzen ist also die Stroke Property des Canvas.
aBMP.Canvas.Stroke.Color := TAlphaColors.Pink; // Definiert als Pink = Alpha or TAlphaColor($FFC0CB)
{$IF CompilerVersion >= 32.0} // >= Tokyo aBMP.Canvas.Stroke.Thickness := 1; {$ELSE} aBMP.Canvas.StrokeThickness := 1; {$ENDIF} aBMP.Canvas.Stroke.Dash := TStrokeDash.Solid; aBMP.Canvas.DrawLine(Pointf(0, 0), Pointf(aBMP.Width, aBMP.Height), 1); Sherlock |
AW: FMX bunte Linien zeichnen .... Random Farbwert
Delphi-Quellcode:
In FMX ist
cardinal (Random(5000)
![]() Der ist bei deinem Beispiel wohl 0, also immer transparent. Besser man nutzt immer ![]() |
AW: FMX bunte Linien zeichnen .... Random Farbwert
Liste der Anhänge anzeigen (Anzahl: 1)
aktuelle Lösung :
Delphi-Quellcode:
function randomColor: TColor;
var rec: TAlphaColorRec; begin with rec do begin A := random(255); R := random(255); G := random(255); B := random(255); end; Result := rec.Color; end; procedure TForm1.btn_draw_linesClick(Sender: TObject); var p1, p2: TPointF; i, j: Integer; Brush: TStrokeBrush; begin for i := 1 to 100 do begin Brush := TStrokeBrush.Create(TBrushKind.Solid, randomColor); Brush.Thickness := 2; // Brush.Kind := Solid; p1 := TPointF.Create(2, 2); p2 := TPointF.Create(random(400), random(400)); localBMP.Canvas.BeginScene; // draw lines on the canvas localBMP.Canvas.DrawLine(p1, p2, 1, Brush); localBMP.Canvas.EndScene; LoadBMP2GUI(nil); Brush.Free; end; end; |
AW: FMX bunte Linien zeichnen .... Random Farbwert
Man kann sogar versuchen Compiler und ErrorInsight und Co. mal richtig zu ärgern. :lol:
Delphi-Quellcode:
const VerTokyo = 32.0;
{$IF CompilerVersion >= VerTokyo} {$DEFINE CanvasDot} {$ENDIF} aBMP.Canvas.{$IF CompilerVersion >= VerTokyo}Stroke.Thickness{$ELSE}StrokeThickness{$ENDIF} := 1; // bzw, aber ich glaub das geht nicht aBMP.Canvas.Stroke{$IF CompilerVersion >= VerTokyo}.{$ENDIF}Thickness := 1; aBMP.Canvas.Stroke{$IFDEF CanvasDot}.{$ENDIF}Thickness := 1; Besser Schöner wäre hier aber bestimmt ein Class-Helper für TCanvas, wo man das nur an einer Stelle nachrüstet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz