![]() |
Zeichnen auf Canvas unter Firemonkey
Hallo, ich bin Firemonkey Anfänger und möchte auf Canvas unter Android Zeichnen.
Wenn ich bei folgendem Programm auf den Button clicke flackert die Linie kurz auf und verschwindet dann wieder. Unter Windows als Zielplattform bleibt die Linie. Was mache ich falsch? procedure TForm2.Button1Click(Sender: TObject); begin Panel1.Canvas.BeginScene; Panel1.Canvas.Stroke.Color := TAlphaColorRec.Red; Panel1.Canvas.DrawLine(PointF(0, 0), PointF(Panel1.Width, Panel1.Height), 10); Panel1.Canvas.EndScene; end; Vielen Dank für eure Hilfe |
AW: Zeichnen auf Canvas unter Firemonkey
Willkommen zum ersten Beitrag! Es tut gut von Dir zu hören :-)
Füge "Stroke.Kind := TBrushKind.bkSolid;" hinzu, das ist idR nur bei Windows voreingestellt. |
AW: Zeichnen auf Canvas unter Firemonkey
Vielen Dank,
ich habe das Programm erweitert: procedure TForm2.Button1Click(Sender: TObject); var Brush :TStrokeBrush; begin Brush := TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.Black); Panel1.Canvas.BeginScene; Panel1.Canvas.Stroke.Kind := TBrushKind.bkSolid; Panel1.Canvas.Stroke.Color := TAlphaColorRec.Red; Panel1.Canvas.DrawLine(PointF(1, 1), PointF(Panel1.Width, Panel1.Height), 50); Panel1.Canvas.EndScene; end; Das Verhalten ist leider gleich geblieben |
AW: Zeichnen auf Canvas unter Firemonkey
Hmmm das einzige was mir noch einfällt wäre "Stroke.Thickness := 1.0;" zu setzen (für die dicke der linie) oder mal das ganze in einer PaintBox anstelle eines Panels probieren.
|
AW: Zeichnen auf Canvas unter Firemonkey
Habe ich beides probiert.
Reagiert genau gleich. Kann es an meinem Handy und Android 10 liegen? |
AW: Zeichnen auf Canvas unter Firemonkey
Ich habe das Linienzeichnen jetzt in der OnPaint Methode gemacht.
Jetzt bleibt die Linie! procedure TForm4.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); var Brush: TStrokeBrush; begin Brush := TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.Black); PaintBox1.Canvas.BeginScene; PaintBox1.Canvas.Stroke.Kind := TBrushKind.bkSolid; PaintBox1.Canvas.Stroke.Color := TAlphaColorRec.Red; PaintBox1.Canvas.Stroke.Thickness := 1.0; PaintBox1.Canvas.DrawLine(PointF(1, 1), PointF(PaintBox1.Width, PaintBox1.Height), 50); PaintBox1.Canvas.EndScene; end; Aber wie kann ich das Zeichnen in einem Button Click Ereignis bewirken? Gibt es eine Möglichkeit die OnPaint Methode von außerhalb aufzurufen? Sorry, aber ich mache gerade erst meine ersten Schritte..... |
AW: Zeichnen auf Canvas unter Firemonkey
Indem du dort irgendwo speicherst, dass es dann in OnPaint gemacht werden soll,
wo du Dieses dann prüfst und es dort machst. :angle2: |
AW: Zeichnen auf Canvas unter Firemonkey
Kannst du bitte ein Beispielcode senden?
Vielen Dank |
AW: Zeichnen auf Canvas unter Firemonkey
Ich habe das Problem gelöst.
Es geht über das Bitmap von Image: procedure TForm5.Button2Click(Sender: TObject); var BMP: TBitmap; MyRect: TRectF; begin BMP := TBitmap.Create; BMP.SetSize(400, 400); MyRect := TRectF.Create(150, 150, 200, 200); try BMP.Clear(TAlphaColorRec.Yellow); BMP.Canvas.BeginScene; //R.Create(10, 10, 390, 390); //BMP.Canvas.Font.Size := 36; //BMP.Canvas.Font.Style:=[TFontStyle.fsbold]; //lWidth := BMP.Canvas.TextWidth(lTextOut); //bWordWrap := (lwidth > 380); //BMP.Canvas.FillText(R, lTextOut, bWordWrap, 1, [TFillTextFlag.RightToLeft], TTextAlign.Center, TTextAlign.Center); BMP.Canvas.Stroke.Kind := TBrushKind.bkSolid; BMP.Canvas.Stroke.Color := TAlphaColorRec.Brown; BMP.Canvas.Stroke.Thickness := 5.0; BMP.Canvas.DrawLine(PointF(1,1),PointF(BMP.Width,B MP.Height),100); BMP.Canvas.Stroke.Color := TAlphaColorRec.Green; BMP.Canvas.DrawEllipse(MyRect,100); BMP.Canvas.EndScene; Image1.Bitmap.Assign(BMP); finally FreeAndNil(BMP); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 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