AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Eigene Komponente X-beliebiges Aussehen
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Komponente X-beliebiges Aussehen

Ein Thema von MarcRB75 · begonnen am 26. Jun 2022 · letzter Beitrag vom 28. Jun 2022
Antwort Antwort
Seite 1 von 2  1 2      
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#1

Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 12:03
Hallo,
ich habe eine Frage:
Kann man eine Komponente entwickeln, die z.B. wie ein Stern, wie eine Kurve oder sonst beliebig aussieht.
Man sollte dann, wenn man während der Laufzeit daran "zieht" die Komponentenform verändern können.
Die Komponente soll genau in dieser Zackenform (Ränder sind direkt an den Linien des Sterns) sein.

Also ein Beispiel: ein Stern hat X-Zacken.
Wenn man an einem Zacken nach rechts/links/oben/unten zieht, dann verändert sich das Aussehen.
Die Ränder der Komponente passen sich dann genau an der neuen Linie an, die man verschoben hat.

Geht das, kann man das überhaupt realisieren?

Vorab vielen Dank für Tipps oder Hilfe, denn ich weiß nicht weiter und weiß auch nicht wie ich ansetzen soll
bzw. wie ich das machen könnte.
Marc
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 12:21
Schau mal, ob Dir das etwas hilft:
https://www.delphipraxis.net/185374-...ml#post1304439
https://www.delphipraxis.net/159798-...-mit-loch.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (26. Jun 2022 um 12:24 Uhr)
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#3

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 12:24
Oh Danke für die schnelle Antwort. Das muss ich mir mal gleich ansehen.
Marc
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#4

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 12:49
Also Dein Video hab ich mir angesehen.

Jaaaaaa so etwas möchte ich gerne machen.

Nur, dass ich Quasi an den Ecken ziehen kann und dass sich dann die Größe des Bereichs verändert.

Ist es richtig, hab ich das richtig verstanden: ein Control bestimmt qusi das Aussehen, die Form?

Ich schau mir mal Deine Links näher an und versuche zu verstehen, was gemacht wird und welchen Effekt das hat.

Ich hoffe, ich blick da durch, denn wenn ich ehrlich bin, so richtig weiß ich nicht, wie ich überhaupt beginnen soll
Marc
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 13:37
Hallo,

ein Control ist, wenn es von der entsprechenden Klasse abgeleitet ist, für sein
eigenes Aussehen zuständig, d.h. muss sich selber zeichnen.

Ich gehe ja mal von VCL aus.
Wenn du dir die "Standard" Controls anschaust sind das i.d.R. die, die Windows
bereits bereit stellt und die VCL bedient sich derer. Wenn du unter "Zusätzlich"
schaust, sind das i.d.R. Controls die sich selber zeichnen, da es kein äquivalentesw
Windows Control davon gibt (oder dieses erst später in Windows eingeführt wurde).

Und falls dein Control nicht in einer "Closed source" Anwendung vorkommt, darfst du
es ruhig veröffentlichen.
Die Allgemeinheit freut sich ganz bestimmt über ein solches neues Steuerelement.
Veröffentlichung kann gerne auch per GetIt erfolgen. Da kann ich dann evtl. etwas helfen,
ist aber eigentlich nicht kompliziert.

Grüße und viel Erfolg damit
TurboMagic
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#6

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 13:53
Hallo,
ja das würde ich gerne auch machen, aber wenn ich ehrlich bin, ich verstehe die Zusammenhänge nicht,
da aus den gesamten Codes nur Teile vorhanden sind.

z.B.

procedure Txxx.CalcPolygon(...; aBitmap: TBitmap;
aRect: TRect);
var
NewRegion: Boolean;
L: Integer;
I: Integer;

procedure SetPoint(Polygon: TPolygon; var I: Integer; X, Y: Integer;
var NewRegion: Boolean);
begin
if (Polygon[I].X <> X) or (Polygon[I].Y <> Y) then
NewRegion := true;
Polygon[I] := Point(X, Y);
Inc(I);
end;


Bei: Txxx.CalcPolygon(...; --->>> Da weiß ich z.B. nicht, was da im Ursprung deklariert wurde, bzw. bei den ... stehen muss.
oder procedure SetPoint(Polygon: TPolygon; ---> da wurde zuvor das TPolygon erzeugt, aber ich weiß nicht wie das geschehen ist.
oder var NewRegion: Boolean ... da muss ja auch eine Funktion/Prüfung vorliegen ...

ich weiß ja gds., wie man eigene Komponenten erstellt und die Ereignisse ect nach den Bedürfnissen anpasst.
Auch wie man ein Polygon zeichnet, oder generell zeichnet, weiß ich.
Mir ist schon bewusst, dass man Points, Arrays einsetzen muss... aber wann und wie...

Aber wie das mit der neuen Komponente, mit einer X-belieben Form, die sich dann anpasst ... funktionieren soll?? ...
Ich bin ehrlich, ich weiß nicht mal, wie ich anfangen soll.

ach ... ich würde das Thema ja wirklich gerne angehen, würde mir aus einem gesamten Code schon das rauspicken, versuchen, umwandeln und Testen,
damit ich das Prinzip verstehe, ... ... aber so ...
Marc

Geändert von MarcRB75 (26. Jun 2022 um 13:55 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 14:01
Naja, deine Komponente bräuchte eine Angabe der Anzahl der Ecken.
Dann stelle dir den Stern mal so vor, dass alle Eckpunkte auf einer Kreisbahn liegen.
Aus der Eckenzahl wäre dann auszurechnen bei Welchem Winkel jeweils ein Eckpunkt auf
der Kreisbahn sein müsste und dann kann man bestimmt per Trigenometrie und unter Angabe
eines Radius ausrechnen wo die jeweilige X/Y Koordinate liegen müsste. Damit hättest du
alle Punkte des Polygons.

Das würde ich dann malk einfach mit einer TPaintBox zeichnen, noch ohne viel an eine
Komponente zu denken. Wenn du dann eine Methode hast die Radius und Eckenzahl als
Parameter bekommt und das auf der Paintbox zeichnen kann, dann hast du ja schon die
wesentliche Grundlage dafür.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#8

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 14:46
Ich verstehe. Also einen Stern kann ich ja zeichnen.
Dann muss ich quasi alle Punkte, die aus dem Stern bestehen, auch die Spitzpunkte
als Variable/Array deklarieren.

Aber wenn ich diese Koordinaten habe/hätte, wie kann ich diese Komponente so "angleichen", dass die Komponente nicht im Quadrat oder nur im Rechteck
ist, sondern an den Sternlinien entlanggeht? Geht das überhaupt??

Eine andere Überlegung von mir war... ..........(geht nicht Überlastung des Arbeitsspeichers ....naja... war eine Überlegung wert....)
Ich fange an zu Zeichnen:
Irgenwo ... auf einem Pixel.
Die Maustaste ist gedrück.
Wenn ich mich der Maus mich bewege, wird für jeden einzelnen Punkt ein neues Image (1 Pixel) erzeugt, das eine X-beliebige Farbe hat.
Gehe ich mit gedrückter Maus zurück, werden die Pixel, dessen Koordinaten ich ja kenne, gelöscht bzw. mit der Hintergrundfarbe überzeichnet.

Lasse ich die Maustaste los, entsteht mein Bild aus den einzelnen Punkten.
Bei Bedarf, kann ich diese Punkte/Linien löschen, durch überzeichnen...

Das wäre doch aus was für den Anfang oder?
Marc

Geändert von MarcRB75 (26. Jun 2022 um 16:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 15:13
Du musst Deine Zielstellung am besten in kleinere Teilbereiche zerlegen.

Zunächst würde ich einfach mal ein leeres Formular nehmen und darauf Figuren zeichnen ermöglichen.
Also im Grunde Objekte, die Du dann in der Größe verändern kannst.
Das wird schon eine ordentliche Aufgabe.

Später kannst Du das dann versuchen so anzupassen, dass Du tatsächliche Windows-Controls "ausstanzt".
Schwierig wird es sicherlich, diese dann noch Größenänderbar zu gestalten (womöglich wird das auch kaum umsetzbar).

Erkläre doch nochmal, wie Du diese "Controls" dann benutzen willst. Mit anderen Schaltern, Edits und Memos zusammen in einem Formular?
Wie und wann soll die Größe der Controls geändert werden?


In meinem Beispiel mit dem Schatten benutze ich kein Standardcontrols sondern zeichne alles selbst in ein Formular und merke mir alles, was ich wo gezeichnet habe.
Das zweite Beispiel schneidet einfach Teile eines normalen Panels weg.
Das sind sehr unterschiedliche Ansätze. Welcher davon möglicherweise für Dich passt, kann ich noch nicht so recht einschätzen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#10

AW: Eigene Komponente X-beliebiges Aussehen

  Alt 26. Jun 2022, 16:09
Also ich habe man einen Anhang gemacht, vielleicht versteht dann jeder besser was ich meine.
Also, es geht um Kurven, aber auch Sterne und sonstige Formen:

Der Anhang besteht aus:
a) Entwickler-Ebene / Bild
b) Code
c) Laufzeit - Anfang sowie wenn man die Punkte verschiebt.

Und das Ganze möchte ich aber als eigene Komponente machen, mit einem relativ genauen Rahmen um die Kuve und den einzelnen Punkte herum.

P.S. Vielleicht sagt der Eine oder Andere bei meinem Code ... furchtbar ... das könnte man anders machen. Ich weiß,
aber ich hab mir halt alles selber beigebracht, weiß leider auch nicht alles. Und das Ganze in diesem Fall ist halt
ein Versuch und bin eigentlich gds. ganz glücklich, dass das überhaupt so funktioniert.
Aber leider kann ich es nicht als Komponente mit schönem, genauen Rahmen um die Linien manchen.

Oder zumindest um die eigentliche Kurve herum und die Punkte setze ich einzeln (jeder Punkt ist eine eigene Komponente)...
Miniaturansicht angehängter Grafiken
start.jpg   bild_verschiebung-der-punkte.jpg   entwicklerbild.jpg   eine-komponente-mit-angepasstem-rahmen.jpg  
Angehängte Dateien
Dateityp: txt Test_Kurven.txt (15,4 KB, 6x aufgerufen)
Marc

Geändert von MarcRB75 (26. Jun 2022 um 16:29 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 19:23 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