AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX]Auf Canvas zeichnen

Ein Thema von Union · begonnen am 12. Okt 2011 · letzter Beitrag vom 12. Okt 2011
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

[FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 02:33
Ich versuche in einer FMX iOS-HD-Anwendung auf einen Canvas zu zeichnen. Funktioniert nur leider nicht Hat das schon jemand geschafft? Hier mein Code (Canvas ist ein TForm.Canvas, hab es aber auch schon mit einem Image versucht):

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Canvas.Stroke.Color := claBlue;
  Canvas.Stroke.Kind:= TBrushKind.bkSolid;
  Canvas.DrawRect(RectF(0,0,50,50),0,0,AllCorners,1);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 12:03
Ich habe herausgefunden, dass FMX unter Windows XP kein driektes Zeichnen auf dem Canvas erlaubt. Man muss das über ein TBitmap selber buffern [edit]Nein, auch unter Windows 7 geht es nicht, weder 32 noch 64 bit [/edit]
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (12. Okt 2011 um 12:20 Uhr)
  Mit Zitat antworten Zitat
wurzelzwerg

Registriert seit: 19. Jun 2011
Ort: Ilmenau
111 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 14:16
Versuchs mal im OnPaint
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 17:12
Das geht, danke Aber ich versteh die Logik dahinter nicht so ganz. Das würde ja heißen, dass FMX permanent diesen Event auslöst, auch wenn gar nichts zu zeichnen wäre. Und dass man, wenn man zeit- oder ereignisgesteuert Zeichnen will, seine Steuerung komplett umstellen muss.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
wurzelzwerg

Registriert seit: 19. Jun 2011
Ort: Ilmenau
111 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 17:51
Nicht permanent, immer dann wenn das BS meint das Fenster neu zeichnen zu müssen(verschieben, verdecken etc).
So wie du das machen wolltest ging das noch nie. OK evtl hat man kurz was gesehen aber anderes Fenster drüberschieben schon war alles weg.
Alternativ kannst du ein TImage manipulieren, das kümmert sich selbst ums Neuzeichnen.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 18:04
Man kann leider auch weder auf den Canvas eines TImage noch auf das enthaltene Bitmap zeichnen. Man muss auf ein in-Memory Bitmap zeichnen und das dann dem Image zuweisen. Dass solche Zeichnung nicht von Dauer ist, ist mir klar. Aber was ist mit dynamischem Zeichnen? Z.b. in einem Zeichenprogramm, oder um eine Mausspur nachzuzeichnen usw.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
wurzelzwerg

Registriert seit: 19. Jun 2011
Ort: Ilmenau
111 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 18:18
Also das hier funktioniert bei mir:
Delphi-Quellcode:
//Image1: TImage;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Bitmap.Canvas.Stroke.Color := claBlue;
  Image1.Bitmap.Canvas.Stroke.Kind:= TBrushKind.bkSolid;
  Image1.Bitmap.Canvas.DrawRect(RectF(0,0,50,50),0,0,AllCorners,1);
  Image1.Repaint;
end;
Mausspur:
Delphi-Quellcode:
var
  Form1: TForm1;
  p: TPointF;

implementation

{$R *.lfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  p.X:= 0;
  p.Y:= 0;
  Image1.Bitmap.Canvas.Stroke.Color := claBlue;
  Image1.Bitmap.Canvas.Stroke.Kind:= TBrushKind.bkSolid;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
var p2: TPointF;
begin
  p2.X:= X;
  p2.Y:= Y;
  Image1.Bitmap.Canvas.DrawLine(p, p2, 1);
  p:= p2;
  Image1.Repaint;
end;

Geändert von wurzelzwerg (12. Okt 2011 um 18:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 18:33
Und bei mir leider nicht. Nicht 32 bit, nicht 64 bit und nicht unter iOS. Da meine GameClass aber einen Canvas im Constructor-Aufruf als Parameter hat, ist das auch kein Problem Ich hatte nur bisher immer den Formcanvas angegeben. Trotzdem interessiert micht warum das auf die billige, direkte Art nicht geht.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (12. Okt 2011 um 18:35 Uhr)
  Mit Zitat antworten Zitat
wurzelzwerg

Registriert seit: 19. Jun 2011
Ort: Ilmenau
111 Beiträge
 
Delphi XE5 Enterprise
 
#9

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 18:46
Hmm. Bei mir ist das ne HD-IOS-Anwendung auf XP, auf dem Mac hab ich das nicht probiert.
Das Image darf allerdings nicht leer sein.

Zitat:
Trotzdem interessiert micht warum das auf die billige, direkte Art nicht geht.
Weils eben nicht nur im Click gezeichnet werden muss wennst auf den FormCanvas malst.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: [FMX]Auf Canvas zeichnen

  Alt 12. Okt 2011, 19:00
Also nochmal vielen herzlichen Dank Wenn man so blöd ist wie ich und das Repaint vergisst
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  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 22:50 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