AGB  ·  Datenschutz  ·  Impressum  







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

Bild direkt auf Form ausschneiden

Ein Thema von taktaky · begonnen am 26. Jun 2008 · letzter Beitrag vom 28. Jun 2008
Antwort Antwort
Seite 2 von 3     12 3      
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#11

Re: Bild direkt auf Form ausschneiden

  Alt 26. Jun 2008, 21:09
Hallo Brüderchen, schau dir mal den rzMagnifier an. Der macht genau so etwas...
Ralph
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#12

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 01:49
Zitat von _frank_:
http://www.delphi-forum.de/viewtopic.php?p=440997#440997

Gruß Frank

Das Demo funktioniert nur wenn ich die Form nicht skaliere, sonst stimmt nicht mit der Auswahl
Hier ist das kleine Projekt
Wo muss ich ändern, damit die Auswahl mit Mausklick drauf kommt ?
Angehängte Dateien
Dateityp: zip project_164.zip (20,2 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#13

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 02:44
warum zum Geier wollt ihr alle auf vergrößerten TImages malen? das hatten wir doch nun erst...
http://www.delphipraxis.net/internal...t.php?t=136843

bei solchen spielereien baut euch ne eigene klasse, die das stretch handelt und in dem fall das selection-Rect.dann habt ihr die kontrolle über alle zeichenroutinen und könnt diese in der richtigen Reihenfolge und performant durchführen.
zoom-funktionalitäten mittels TImage.Stretch zu realisieren bringt mehr Probleme als es löst, besonders, wenn noch zusätzliche Zeichen-Routinen ins Spiel kommen.
Entweder zeichnen oder TImage. TImage ist ein reiner Grafikcontainer und nicht fürs Zeichnen konzipiert.
die Demo soll nur veranschaulichen, wie es unter normalen Bedingungen funktioniert (mousedown/mousemove/mouseup/pmXor). TImage hab ich an dem Punkt nur genommen, um nicht mit einer eigenen Klasse gleich zu verwirren. dafür gibts den download im lezten Posting des verlinkten Threads

im Anhang mal das Grundgerüst einer solchen Zeichenkomponente.da das schon öfters gefragt wurde, hab ichs mal fix zusammengetippt...aber nicht einfach nur kopieren, sondern verstehen!

Gruß Frank
Angehängte Dateien
Dateityp: zip drawcontrol_999.zip (120,6 KB, 82x aufgerufen)
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#14

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 11:12
Fine
Mit dem vorherigen Demo habe ich genauso gemacht um die Koordinaten vom Rectangle zu zeigen und hat geklappt
mit diesem Demo klappt nicht :

Delphi-Quellcode:
...
  private
    fSelRect:TRect; //declared
...
procedure TForm1.Timer2Timer(Sender: TObject);
begin
      Edit1.Text:= intToStr(fselRect.left); // undeclared fselRect !
      Edit2.Text:= intToStr(FselRect.Top); // ...
      Edit3.Text:= intToStr(FselRect.right);
      Edit4.Text:= intToStr(FselRect.bottom);

Showmessage(Edit1.Text+',' + Edit2.Text+',' +Edit3.Text+',' +Edit4.Text);
end;
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 11:22
taktaky, Du hast genau zwei Möglichkeiten:

Entweder Du fängst schleunigst an, vollständige Beiträge zu schreiben - dazu gehört unter Anderem die Beschreibung dessen, was Du getan hast und auch die genaue Beschreiubng, was nicht klappt und auch irgendeine konkrete Frage. Wenn Du weiter damit fortfahren willst, uns Beiträge mit dem Satz "geht nicht" hinzurotzen, dann suche Dir dafür ein anderes DelphiForum. Ich habe die Faxen echt satt.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#16

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 11:32
Das Problem ist nur hier :

Delphi-Quellcode:
procedure TDrawControl.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin


  fSelecting:=false;
  clipcursor(nil);
  inherited;
 // showmessage(intToStr(fselRect.left));// so klappt. Ich kann alle Werte anzeigen
  Edit1.Text:=intToStr(fselRect.left); // aber so nicht !
// Debugg sagt : Undeclard Edit1 ! Als keine Edit1 auf meine Form wäre !

end;
Ich kann die Koordinaten vom Rectange in eine Message zeigen aber in Edit nicht
Warum ?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#17

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 11:40
naja, was nicht geht steh ja im Quelltext..."undeclared"
in TForm1 gibt es keine Variable fSelRect...
FSelRect ist eine private-Deklaration innerhalb TDrawControl ist ist somit nicht in TForm1 verfügbar.
genauso wie TDrawControl Edit1 nicht kennt woher soll der compiler das wissen, dass Edit1 auf Form1 zu finden ist? das musst du ihm schon sagen, wobei statische, instanzübergreifende Abhängigkeiten dringends zu vermeiden sind.

um Private-Felder von außerhalb zu setzen, erstellt man Properties (am besten mit Setter, damit man nch dem setzen gleich redraw aufrufen kann). die Properties kommen dann entweder nach published (später im OI sichtbar) oder public (nur vom Quelltext aus ereichbar).und zugriff dann natürlich mittels <instanzvariable>.<property>:=<Wert>;

Und nicht auf die Idee kommen "Dann mach ich die Variable halt public"...

warum fragst du eigentlich nicht mal dein Brüderchen oder hat taaktaak das nur so gesagt? (vielleicht ist er auch schon verzweifelt *g*). ich denke mal, er kann dir auch einige Tips geben, auch was das Posten hier betrifft.

Gruß Frank
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#18

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 17:29
Du hast Recht
Ich habe das Problem gelöst nachdem ich Variable als global definiert habe

Ich möchte die Pen-Breite ändern aber sie bleibt immer dünn und egal was für einen Wert ich eingebe !
Delphi-Quellcode:
procedure TDrawControl.DrawSelRect;
begin
  fbmp.Canvas.Pen.Color:=clBlue;
  fbmp.Canvas.Pen.Mode:=pmNotXor;
  fbmp.Canvas.Pen.Style:=psDot;
  fbmp.Canvas.Rectangle(fSelRect.left,fSelRect.top,fSelRect.right,fSelRect.bottom);
  fbmp.Canvas.Pen.Style:=psSolid;
  fbmp.Canvas.Pen.Mode:=pmCopy;
  fbmp.Canvas.Pen.Color:=clBlack;
  fbmp.Canvas.Pen.width:=5; // Bleibt immer sie selbe !
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#19

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 17:49
Wie wäre es denn, wenn Du die Stiftbreite setzt, bevor Du zeichnest?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#20

Re: Bild direkt auf Form ausschneiden

  Alt 27. Jun 2008, 18:26
Zitat von taktaky:
Ich habe das Problem gelöst nachdem ich Variable als global definiert habe
genau das solltest du nicht machen! du solltest ein property definieren.

Delphi-Quellcode:
protected
  procedure SetSelRect(r:TRect);
published
  property SelRect:TRect read fSelRect write SetSelRect;

..

procedure TDrawControl.SetSelRect(r:TRect);
begin
  fSelRect:=r;
  redraw;
end;
und dann von form1 aus über die instanzvariable setzen:

dc.SelRect:=Rect(0,0,100,50); richtig lesen, mitdenken und ein bisschen mehr Eigeninitiative wären sehr wünschenswert...

HTH Frank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:24 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