Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Teile eines images kopieren und in anderes image einfügen (https://www.delphipraxis.net/24645-teile-eines-images-kopieren-und-anderes-image-einfuegen.html)

jAcK oRsEn 23. Jun 2004 20:43


Teile eines images kopieren und in anderes image einfügen
 
Hi,


wie kann ich ein Teil eines Images kopieren und in ein anderes image einfügen?

supermuckl 23. Jun 2004 20:46

Re: Teile eines images kopieren und in anderes image einfüge
 
wer die hilfe benutzt wird fündig..

Die Methode CopyRect kopiert einen Teil eines Bildes aus einer anderen Zeichenfläche in die Zeichenfläche.

Delphi-Syntax:

procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);

C++ Syntax:

void __fastcall CopyRect(const TRect &Dest, TCanvas* Canvas, const TRect &Source);

Beschreibung

Mit CopyRect können Sie einen Teil eines Bildes aus einer anderen Zeichenfläche in das Bild des TCanvas-Objekts kopieren. Die Eigenschaft Dest legt fest, in welches Rechteck innerhalb der Zeichenfläche das Quellbild kopiert werden soll. Der Parameter Canvas gibt die Zeichenfläche an, die das zu kopierende Bild enthält. Source legt das Rechteck fest, das den zu kopierenden Teil der Zeichenfläche enthält.

Der Kopiervorgang erfolgt in dem Modus, der durch CopyMode festgelegt ist.

jAcK oRsEn 23. Jun 2004 21:06

Re: Teile eines images kopieren und in anderes image einfüge
 
Also wenn ich jetzt in image2, ein rechteck gräße 105*105 von image1 kopieren möchte,

wie mach ich das dann?

supermuckl 23. Jun 2004 21:12

Re: Teile eines images kopieren und in anderes image einfüge
 
steht doch alles da was du brauchst :(

Nicodius 23. Jun 2004 21:13

Re: Teile eines images kopieren und in anderes image einfüge
 
such mal in der oh unter Copyrect ) -- delphihilfe ..


edit: jeden tag freu ich mich mehr auf die verwirklichung von luckies "hilfeverweis"

...

jAcK oRsEn 23. Jun 2004 21:17

Re: Teile eines images kopieren und in anderes image einfüge
 
ich bekomm es aber nicht hin..

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b : Trect;
begin
a := rect(0,105,0,0);
b := rect(0,105,0,0);
image2.canvas.CopyRect(a,image1.picture.bitmap.canvas,b);
end;

Nicodius 23. Jun 2004 21:19

Re: Teile eines images kopieren und in anderes image einfüge
 
ok ich proggs schnell

Mirilin 23. Jun 2004 21:21

Re: Teile eines images kopieren und in anderes image einfüge
 
:hi:

In der Hilfe liegt ein Beispiel :)


mfg Tobias

jAcK oRsEn 23. Jun 2004 21:22

Re: Teile eines images kopieren und in anderes image einfüge
 
das hab ich ja getestet, deswegen komm ich ja nicht weiter

Nicodius 23. Jun 2004 21:24

Re: Teile eines images kopieren und in anderes image einfüge
 
doch nicht



weil besser erklären als die hilfe kann ichs auch nicht


Delphi-Quellcode:
procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);
Zitat:

Beschreibung

Mit CopyRect können Sie einen Teil eines Bildes aus einer anderen Zeichenfläche in das Bild des TCanvas-Objekts kopieren. Die Eigenschaft Dest legt fest, in welches Rechteck innerhalb der Zeichenfläche das Quellbild kopiert werden soll. Der Parameter Canvas gibt die Zeichenfläche an, die das zu kopierende Bild enthält. Source legt das Rechteck fest, das den zu kopierenden Teil der Zeichenfläche enthält.

Der Kopiervorgang erfolgt in dem Modus, der durch CopyMode festgelegt ist.

--> Dest = Wohinein es kopiert werden soll, Canvas üebrwelche Canvas as ganze laufen soll, source von welchen rect es sein soll ^^

Nicodius 23. Jun 2004 21:26

Re: Teile eines images kopieren und in anderes image einfüge
 
"var
a,b : Trect;
begin
a := rect(0,105,0,0);
b := rect(0,105,0,0);
image2.canvas.CopyRect(a,image1.picture.bitmap.can vas,b);
end;"

das kann ja nicht gehn :? a, b nehmen das ganze ja von der canvas des Forms!

du musst es mit einem Rect AUS dem image nehmen :stupid:

Keldorn 23. Jun 2004 21:26

Re: Teile eines images kopieren und in anderes image einfüge
 
Hallo

Zitat:

a := rect(0,105,0,0);
jetzt gugg dir mal an, wie ein trect aussieht und auch, wie das rect im Beipsiel in der Hilfe aussieht.
wenn du für left und right 0 angibst, was glaubst du wird kopiert, eine spalte mit 0Pixeln-breite ? Der code ist richtig, nur definierst du das rechteck falsch.

Mfg Frank

jAcK oRsEn 23. Jun 2004 21:27

Re: Teile eines images kopieren und in anderes image einfüge
 
und wie mach ich das?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b : Trect;
begin
a := rect(0,0,105,105);
b := rect(0,0,105,105);
image2.canvas.CopyRect(a,image1.picture.bitmap.canvas,b);
end;
geht auch nicht

supermuckl 23. Jun 2004 21:29

Re: Teile eines images kopieren und in anderes image einfüge
 
:kotz:

Nicodius 23. Jun 2004 21:30

Re: Teile eines images kopieren und in anderes image einfüge
 
ok dann halt der code ...

Delphi-Quellcode:
var i,j:integer;
    Bild,teilBild:TBitmap;


Bild:=TBitmapo.create();
bild.loadfromfile('c:\....');
For i:=0 to AnzahlX do
  For j:=0 to ANzahlY do
    begin
       teilBild:=TBitmap.create();
       teilbild.copyrect(round(bild.width/AnzahlX*i),round(bild.height/AnzahlY*j),
                         round(bild.width/AnzahlX*(i+1)),round(bild.height/AnzahlY*(j+1),
                         bild);
       teilbild.savetofile(....);
       teilbild.free;
    end;

Keldorn 23. Jun 2004 21:30

Re: Teile eines images kopieren und in anderes image einfüge
 
Delphi-Quellcode:
a := rect(100,100,200,200);
b := rect(links,oben,rechts,unten);
ist das wirklich so schwer?

Nicodius 23. Jun 2004 21:31

Re: Teile eines images kopieren und in anderes image einfüge
 
aber er braucht es auch vom image das ist sein problem s.h mein post)

jAcK oRsEn 23. Jun 2004 21:33

Re: Teile eines images kopieren und in anderes image einfüge
 
mah, das funktioniert nicht, und ich verstehe es nicht

Nicodius 23. Jun 2004 21:33

Re: Teile eines images kopieren und in anderes image einfüge
 
:cry: ich kann auch nicht mehr amchen als das posten was bei mir geht :|

Nicodius 23. Jun 2004 21:34

Re: Teile eines images kopieren und in anderes image einfüge
 
aso du musst natürlich kein bmp machen ich hab den code nur von nem prog kopiert


du nimmst statt bild zb image 1 :roll:

Keldorn 23. Jun 2004 21:34

Re: Teile eines images kopieren und in anderes image einfüge
 
Zitat:

Zitat von Nicodius
ok dann halt der code ...

Delphi-Quellcode:
var i,j:integer;
    Bild,teilBild:TBitmap;


Bild:=TBitmapo.create();
bild.loadfromfile('c:\....');
For i:=0 to AnzahlX do
  For j:=0 to ANzahlY do
    begin
       teilBild:=TBitmap.create();
       teilbild.copyrect(round(bild.width/AnzahlX*i),round(bild.height/AnzahlY*j),
                         round(bild.width/AnzahlX*(i+1)),round(bild.height/AnzahlY*(j+1),
                         bild);
       teilbild.savetofile(....);
       teilbild.free;
    end;

das soll funktionieren? :roll:
- kein resourcenschutzblock bei bild:=tbitmap.create
- die copyrectfktn ist auch nicht korrekt
- teilbild: warum immer in der schleife erzeugen? einmal reicht
- teilbild: größe wird nicht gesetzt, du kannst kopieren was du willst und wirst nichts sehen
- evtl fehlt noch das pixelformat für die teilbitmap

jAcK oRsEn 23. Jun 2004 21:38

Re: Teile eines images kopieren und in anderes image einfüge
 
es geht nicht...


ich möchte von einem großen bild...ein teilstück in ein zweites image, welches leer ist copieren...

vom ersten bild soll das ein Stück von 105*105 pixeln sein!

Nicodius 23. Jun 2004 21:40

Re: Teile eines images kopieren und in anderes image einfüge
 
ich habs hier vom board kopiert und es geht ... der ist ja gekürzt ^^ deine teiel musst du schon ausstauschen :roll:

Keldorn 23. Jun 2004 21:42

Re: Teile eines images kopieren und in anderes image einfüge
 
Delphi-Quellcode:
a := rect(0,0,105,105); //destrect
b := rect(x*105,y*105,(x+1)*105,(y+1)*105); //srcrect
x und y geben die" Spalte und zeile" vom image 1 an

jAcK oRsEn 23. Jun 2004 21:44

Re: Teile eines images kopieren und in anderes image einfüge
 
@nicodius:bei mir gehts nicht, meldungen wie trect und int64 inkopatible typen u.s.w. ca 6 stück


keldorn: und der aufruf?

Nicodius 23. Jun 2004 21:45

Re: Teile eines images kopieren und in anderes image einfüge
 
nur mal so ne frage hast du

Delphi-Quellcode:
var a : TRect;
            b : TRect
auch geschireben sonst versteh ichs nicht :roll:

Keldorn 23. Jun 2004 21:45

Re: Teile eines images kopieren und in anderes image einfüge
 
Zitat:

Zitat von jAcK oRsEn
bei mir gehts nicht, meldungen wie trect und int64 inkopatible typen u.s.w. ca 6 stück

poste mal die prozedur

jAcK oRsEn 23. Jun 2004 21:47

Re: Teile eines images kopieren und in anderes image einfüge
 
kann mir nicht mal jemand nen code schreiben der funktioniert, ich verstehe jetzt rein garncihts mehr...noch weniger wie vprher

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var i,j:integer;
    Bild,teilBild:TBitmap;
begin


bild.loadfromfile('c:\jack.bmp');
For i:=0 to 1 do
  For j:=0 to 1 do
    begin
       teilBild:=TBitmap.create();
       image2.canvas.copyrect(round(bild.width/1*i),round(bild.height/1*j),
                         round(bild.width/1*(i+1)),round(bild.height/11*(j+1),
                         bild);
       teilbild.savetofile('c:\jacktemp.bmp');
       teilbild.free;
    end;

Nicodius 23. Jun 2004 21:47

Re: Teile eines images kopieren und in anderes image einfüge
 
DANN POSTE DOCH DIENEN CODE !


edit: sorry aber .. warum kannst du nicht einfach deinen code posten dann ists leichter?! :cry:

jAcK oRsEn 23. Jun 2004 21:48

Re: Teile eines images kopieren und in anderes image einfüge
 
hab ich oben

Nicodius 23. Jun 2004 21:50

Re: Teile eines images kopieren und in anderes image einfüge
 
ja dann ... du sagtest du hast deine bilder in 2 images...


jetzt holst du es erst wieder vonner datei wie soll man dir so helfen könenn?

jAcK oRsEn 23. Jun 2004 21:51

Re: Teile eines images kopieren und in anderes image einfüge
 
du hast gesagt ioch soll deinen code nehmen, also hab ich das gemacht...
ausserdem bleiben die fehler die gleichen

was soll ich denn nu machen?

supermuckl 23. Jun 2004 21:53

Re: Teile eines images kopieren und in anderes image einfüge
 
überlegen wär mal nich schlecht ( sorry )

aber normal kommt man ALLEINE nur mit der delphi hilfe auf die lösung !

:cheers:

jAcK oRsEn 23. Jun 2004 21:57

Re: Teile eines images kopieren und in anderes image einfüge
 
ja aber vielleicht kann ich es einfach nicht, weil ich von dem ganzen noch nichts verstehe...

für mich ist das alles nur bahnhof!

ich brauche ein für mich zugeschnittenes demo...

atreju2oo0 23. Jun 2004 23:05

Re: Teile eines images kopieren und in anderes image einfüge
 
Mit diesem Code geht es wunderbar...
Allerdings sind hier keine Errorroutinen drin.


Delphi-Quellcode:
var Bitmap:TBitmap;
// Bitmap ist das ZIEL-Bitmap...
// MeinBitmap mußt Du vorher erstellt und geladen haben..

Bitmap:=TBitmap.Create;
Bitmap.Width:=400;
Bitmap.Height:=400;
Bitmap.Canvas.CopyRect(Rect(0,0,200,200),
                                      MeinBitmap.Canvas,
                                      Rect(0,0,200,200));
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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