BGRABitmap Teil eines Bildes vergrössern

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

BGRABitmap Teil eines Bildes vergrössern

Beitrag von af0815 »

Ich habe ein Image in einem BGRABitmap und möchte nur einen Teil vergrössert anzeigen.

Beispiel ich habe ein Bild das ist 3000x2000 Px groß. Das zeige ich an. zusätzlich möchte ich einen ca. 300x200 Px großen Bereich anzigen, den ich mir frei aussuchen kann.

Bei den ganzen Tutorials habe ich nur gefunden, wie ich Resizen kann, aber nicht wie ich einen Ausschnitt erstellen kann.

Das funktioniert irgendwie nicht,

Code: Alles auswählen

                AR.Width:= StrToInt(EdtW.Text);
                AR.Height:=StrToInt(EdtH.Text);
                AR.Left:=StrToInt(EdtL.Text);
                AR.Top:=StrToInt(EdtT.Text);
               AZ.Width:= StrToInt(EdtW.Text);
                AZ.Height:=StrToInt(EdtH.Text);
                AZ.Left:=0;
                AZ.Top:=0;
                tmpB:= TBGRABitmap.Create(AZ.Width,AZ.Height);
                tmpB.Canvas.CopyRect(AZ,bmpA.Canvas,AR);
                ImageAutoBild.Picture.Bitmap.Assign(tmpB);
Die Idee dahinter, war, das ich mir einen Ausschnitt mit CopyRect über den Canvas hole. Da bin ich aber am Holzweg gelandet.

Kann mir da wer erklären, wie es richtig geht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap Teil eines Bildes vergrössern

Beitrag von Winni »

Hi!

Ja,ja - das Interface ist sehr, sehr lang ....

Das geht ganz einfach.
Img soll mal das Originalbild sein, part enthält dann den Ausschnitt:

Code: Alles auswählen

var Img, part: TBGRAbitmap;
       R : Trect;

......
R := Rect(100,100,200,200);
part := TBGRAbitmap.create;
BGRAreplace (part,  img.getPart(R) );
....
Die Originaldaten in img bleiben dabei unberührt.

Winni

Antworten