Autor Beitrag
jerry
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 10.02.05 22:45 
(Delphi-Anfänger: eine vielleicht etwas dusselige Anfrage)

Mit meinem Programm schneide ich aus einem Bitmap in Hochformat (angezeigt in image1) ein Rechteck in Breitformat aus (angezeigt in image2); das klappt so weit.

Nun möchte ich aber das auszuschneidende Rechteck von oben nach unten wandern lassen können; ich erhöhe dazu den Wert "oben"; in image 2 sollte nun der neue, etwas tiefer liegende Ausschnitt zu sehen sein.

Das klappt aber nicht, sondern das Bild in image2 wird nur immer länger; es wird also nur ein Streifen unten hinzugefügt, ohne dass oben ein Streifen gelöscht wird..

Was muss ich ändern, damit in image2 nur ein Rechteck mit der definierten Größe erscheint?

Gruß

Jeppes

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, StdCtrls, ExtCtrls; 

type 
TForm1 = class(TForm) 
Image1: TImage; 
Image2: TImage; 
Button2: TButton; 
procedure FormCreate(Sender: TObject); 
procedure Button2Click(Sender: TObject); 
private 
{ Private-Deklarationen } 
public 
{ Public-Deklarationen } 
end

var 
Form1: TForm1; 
oben : Integer; 

implementation 

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
oben := 0
end

procedure TForm1.Button1Click(Sender: TObject); 
var 
pict1:string
Bitmap: TBitmap; 
MyRect: TRect; 
b,h, h2,w: Integer; 
begin 
pict1 := 'pic1.bmp'
Image1.picture.LoadFromFile(pict1); 
Bitmap := TBitmap.Create; 
Bitmap.LoadFromFile(pict1); 
h := Bitmap.Height; 
w := Bitmap.Width; 
h2 := 10 + oben; 
MyRect := Rect(0,h2,w,h2 + Round(h/2)); 
Image2.Canvas.CopyRect(MyRect,Bitmap.Canvas,MyRect); 
Bitmap.Free; 
oben := oben + 10
end

end.


Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 11.02.05 16:42 
hier liegt der hund begraben:
ausblenden Quelltext
1:
Image2.Canvas.CopyRect(MyRect,Bitmap.Canvas,MyRect);					

du verschiebst auch das rect des image2 nach unten, anstatt das nur zum kopieren herzunehmen.
du brauchst also ein sourcerect und ein destinationrect, wobei das top des destinationrect immer 0 sein muss.