AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia FMX bunte Linien zeichnen .... Random Farbwert
Thema durchsuchen
Ansicht
Themen-Optionen

FMX bunte Linien zeichnen .... Random Farbwert

Ein Thema von bernhard_LA · begonnen am 17. Aug 2020 · letzter Beitrag vom 18. Aug 2020
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.121 Beiträge
 
Delphi 11 Alexandria
 
#1

FMX bunte Linien zeichnen .... Random Farbwert

  Alt 17. Aug 2020, 13:05
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;
Miniaturansicht angehängter Grafiken
redlines.jpg  

Geändert von bernhard_LA (17. Aug 2020 um 13:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX bunte Linien zeichnen .... Random Farbwert

  Alt 17. Aug 2020, 13:34
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:
  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);
Zu setzen ist also die Stroke Property des Canvas.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#3

AW: FMX bunte Linien zeichnen .... Random Farbwert

  Alt 17. Aug 2020, 13:44
cardinal (Random(5000) In FMX ist TAlphaColor immer mit Alphakanal definiert.
Der ist bei deinem Beispiel wohl 0, also immer transparent.

Besser man nutzt immer TAlphaColorRec dafür.

Geändert von Rollo62 (17. Aug 2020 um 13:48 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.121 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX bunte Linien zeichnen .... Random Farbwert

  Alt 18. Aug 2020, 07:56
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;
Miniaturansicht angehängter Grafiken
color_lines.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX bunte Linien zeichnen .... Random Farbwert

  Alt 18. Aug 2020, 13:06
Man kann sogar versuchen Compiler und ErrorInsight und Co. mal richtig zu ärgern.
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Aug 2020 um 13:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz