AGB  ·  Datenschutz  ·  Impressum  







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

TShape + Canvas

Ein Thema von Schwanengel · begonnen am 10. Apr 2003 · letzter Beitrag vom 19. Mai 2003
Antwort Antwort
Seite 3 von 3     123   
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#21
  Alt 30. Apr 2003, 11:02
Hi Schwanengel,

leider komme ich zeitlich etwas ins schleudern. Theoretischer Ansatz ist das eine (auch mal schnell gemacht). Praktisch lösen ist das andere (und dauert meistens).

Mein letzter Hinweis hört sich ja recht gut an, aber im Moment dokter ich auch recht erfolglos rum.

Im Moment müßten wir beide erst mal klären, wie der Kopierforgang auf deine Zeichenfläche erfolgen soll. Zur Zeit haben wir ja nur deine "Kopie-Paintbox" die wir verschieben können.

Dabei ist mir aufgefallen, dass es besser ist, wenn diese mit begin des kopierens zur laufzeit erstellt, und nach dem Platzieren und kopieren auf die Zeichenfläche entfernt wird. Ob man sinnvoll eine Paintbox nimmt müßte auch noch geklärt werden. Aber wir können ja mal so anfangen.

So, nun würde ich empfehlen, hier ein eigenes Objekt zu erstellen, dass wir von der Paintbox ableiten. Ich glaube, da kannst du am meisten lernen.

Leg mal ein neues Objekt der class TPaintBox an und wenn du nicht weiter kommst helf ich dir.

Hinweis: Auch wenn du das für einen Weg hällst der an deinen aktuellen Problemen vorbeiführt, glaub mir, das ist der richtige!

Gruß oki
  Mit Zitat antworten Zitat
Schwanengel

Registriert seit: 6. Apr 2003
22 Beiträge
 
#22
  Alt 30. Apr 2003, 20:18
Hi Oki,

es geht mir in diesem Fall ja wirklich nur um die Transparenz.
Sämtliche anderen Probleme sind im richtigen Programm schon alle gelößt.
Ehrlich gesagt wenn ich jetzt anfangen soll, eine Komponente zu entwickeln wie Du meinst, finde ich das ja auch richtig und schön.
Aber hierin besteht ja mein Problem, absolut keine Ahnung.
Ich habe ne' Menge Bücher aber nirgendwo ist das so richtig beschrieben.
Also habe ich nur mit den Komponenten experimentiert die mir zur Verfügung stehen.
Ich müßte also bei null beginnen. Wie man eine neue Komponente erzeugt und wie sie installiert wird weiß ich, daß ist aber auch alles.
  Mit Zitat antworten Zitat
Schwanengel

Registriert seit: 6. Apr 2003
22 Beiträge
 
#23
  Alt 5. Mai 2003, 07:01
Hi Oki,

wie ich so sehe hast Du immer wenig Zeit.
Ich hatte am Sonntag einen Geistesblitz, erzeugte eine Funktion in der alle notwendigen Operationen enthalten sind.
Die alle Arbeit übernimmt und fügte sie an der richtigen Stelle ein.
Jetzt habe ich alles wie es sein soll.
Bei Colorbildern bekommt der Computer ganz schön was zu tun, aber es geht.
Den Vorschlag mit dem Vergleich zwischen zwei Bildern geht in der
Form nicht, da ja alles bei "Dragg"(aus S_Paint zu ersehen) ablaufen muß und da bricht alles zusammen. Ich bin auch von der blöden Paintbox wieder weg, hatte ja am Anfang schon mit TImage begonnen also jetzt weiter damit.
Aber um auf Deinen Vorschlag zurück zu kommen, ein neues Objekt anzulegen. Ich habe da volle Interesse dran. Wenn du mir sagen könntest
wo ich zum Anfang was nachlesen kann.

Warte gespannt auf Deine Antwort....
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#24
  Alt 5. Mai 2003, 08:25
Hi Schwanengel.

Schön, dass du von alleine auf die TImage-Komponente gekommen bist. Das währe jetzt mein nächster Tip für die Transparenz gewesen.

Du sagst, dass du eine Methode eingefügt hast, die Dir viel Arbeit abnimmt.
Das ist schon der erste Schritt zum Object-Glück.

Mal was allgemeines vorweg. Es währe doch schön, wenn du dir in deinem Hauptprogramm nicht alles merken mußt für die Operationen deiner kopierten Zeichnungen. Also merkt mal sich das doch am Besten in einem Objekt und sagt diesem immer nur was aktuell passiert um es dann reagieren zu lassen.

Einfach gesprochen sieht das so aus.

Das Kopie-Object soll erstellt werden: also kreieren!

Du willst mit dem verschieben anfangen: also bescheid sagen!

Du bewegst die Maus: also bescheid sagen!

Die Kopie ablegen: also bescheid sagen!

Fertig: also Object zerstören(destroy)!

Wie macht man das?

Du hast selber gemerkt, dass ein TImage ideal für deine Aufgabenstellung ist.

Nun gut, dann ist unser neues Object von der Klasse TImage abgeleitet.
Das sieht so aus:

Delphi-Quellcode:
type
  TCopyImage = class(TImage)
  private
  
  public

  end;
In Private und Public schreiben wir dann alle notwendigen Eigenschaften und Methoden die wir so brauchen.

Gib mir mal deinen aktuellen Code rüber und ich mach mal einen Anfang.

Gruß oki
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#25
  Alt 14. Mai 2003, 08:09
Hi Schwanengel,

ich wollte mal horchen ob's dich noch gibt. Wie kommst Du mit deinem Projekt vorwärts und brauchst Du noch meine Hilfe?

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#26
  Alt 14. Mai 2003, 10:03
is delphi 2 gut?
Mario
  Mit Zitat antworten Zitat
Schwanengel

Registriert seit: 6. Apr 2003
22 Beiträge
 
#27
  Alt 17. Mai 2003, 06:56
Hi

Die letzte Frage zuerst: "Delphi2 ist nicht unbedigt das beste,
Aber alles was ich bis jetzt machen wollte
ging damit.! " (Geldmangel)

Jetzt weiter:
Hi Oki mich bit's noch.
Ich habe durch die "Function" die mir in den Sinn kam, schon wieder eine
neue Idee gehabt.
Daraus entstand ein neues Programm. Ich habe eine neue Frage, ohne jetzt
das andere Problem zu vergessen.(Komponentenentwicklung)
Ich benutze wieder das bewuste verchieben, was wir bis jetzt besprochen haben...

Frage:
Wie kann ich dieses zweite Bild (Image2) welches ich auf dem
Untergrund (Image1) verschiebe, an bestimmten Rasterpunkten
die in der unteren Image (Image1) sind einrasten lassen.

Gruß Schwanengel
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#28
  Alt 19. Mai 2003, 11:19
Hi Schwanengel.

Ich habe gerade ein ähnliches Problem bearbeitet. Zur Umsetzung des Themas "Einrasten an bestimmten Punkten" würde ich noch mal die Aufgabe klar definieren.

Die Frage ist erst mal, ob das "Einrasten" an einer Art Gitter, oder an bestimmten Punkten erfolgen soll.

Bei einem Gitter würde ich im Image1 das Gitter definieren und das Einrasten zur Laufzeit berechnen.
Bei definierten Punkten die Punkte setzen und weitere Parameter wie Entfernung vom Punkt für Einrasten usw. festlegen. Genauso müßte hier geklärt werden, ob es eine feste Anzahl von Einrastpunkten oder eine beliebige gibt. Dementsprechend flexiebel muß die Verwaltung dann laufen.

Ist das alles getan, können wir mit einer einfachen eigenen Funktion von Image1 die Korrektur der Koordinaten vornehmen lassen. Die würde dann so aussehen:
Delphi-Quellcode:
Function GetRastPoint(Value : TPoint) : TPoint;
begin
  Result := Value;
  // befinden sich die koordinaten in der Nähe eines Einrastpunktes?
  
  // wenn nicht raus!

  // wenn ja, Koordinate des Einrastpunktes Result zuweisen!
end;
Die Funktion GetRastPoint kann vor Positionierung der Graphik aufgerufen werden, wobei die Position der Platzierung dann mit dem Rückgabewert erfolgt.

Für die Einrast-Koordinaten sag mal bescheid, welche der oben erwähnten Methoden du brauchst. Dann machen wir da was anständiges draus.

Gruß oki
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 02:27 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