AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia gdi+ 2 TGPBitmap zu einer zusammenfügen
Thema durchsuchen
Ansicht
Themen-Optionen

gdi+ 2 TGPBitmap zu einer zusammenfügen

Ein Thema von ATS3788 · begonnen am 15. Feb 2012 · letzter Beitrag vom 16. Feb 2012
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 15. Feb 2012, 23:08
Hallo
Weiss jemand eine Möglichkeit
wie man zwei TGPBitmap zu einer zusammenfügen kann.

Kann auch ein TGPImage sein.
Martin MIchael
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 15. Feb 2012, 23:22
Hallo
Weiss jemand eine Möglichkeit
wie man zwei TGPBitmap zu einer zusammenfügen kann.

Kann auch ein TGPImage sein.
JO!
Schau im Source von GDIClock da wird das Dokumentiert. Wenn du damit überlagern meinst!

gruss
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#3

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 16. Feb 2012, 11:01
Danke habe ich mir mal angeschaut
Interessant, nur ich brauche was um so was wie Bitmap1.height + Bitmap2.height
beide haben die gleiche Breite und das gibt eine neue Bitmap3.
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 16. Feb 2012, 11:04
Höhe aus Höhensumme berechnen und dann die beiden Quellbitmaps draufmalen, was ist das Problem?
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 ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#5

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 16. Feb 2012, 11:34
Delphi-Quellcode:
var
B1 , B2, B3 : TBitmap;
i,x,y : integer;
begin

B1 := TBitmap.Create;
B2 := TBitmap.Create;
B3 := TBitmap.Create;

B1.LoadFromFile('d:\test1.bmp');
B2.LoadFromFile('d:\testX.bmp');


B3.Height := B1.Height + B2.Height;
B3.Width := B1.Width;

for x := 0 to B3.Width -1 do
for y := 0 to B3.Height -1 do begin

if y <= B1.Height then
B3.Canvas.Pixels [x , y ] := B1.Canvas.Pixels [x , y ]
else
B3.Canvas.Pixels [x , y ] := B2.Canvas.Pixels [x , y - B1.Height -1 ];

end;

B3.SaveToFile('d:\testQ.bmp');

 Image2.Picture.Bitmap.Assign(B3);

 B1.Free;
 B2.Free;
 B3.Free;

end;
Habe da mal was zusammengebastelt, aber es geht
auf die Idee hat mich die Seite
http://www.davdata.nl/math/bmresize.html
gebracht. Mal sehen ob ich das noch schneller mit streams bekomme
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 16. Feb 2012, 11:41
Wieso nicht einfach mit Delphi-Referenz durchsuchenTCanvas.Draw?
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 ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#7

AW: gdi+ 2 TGPBitmap zu einer zusammenfügen

  Alt 16. Feb 2012, 14:56
Delphi-Quellcode:
function AddBitmapInHeight(B1, B2 : TBitmap) : TBitmap;
type
TBitmapHeader = packed Record
bitCH1 : AnsiChar;
bitCH2 : AnsiChar;
bitSize : cardinal;
bitUnUsed1 : word;
bitUnUsed2 : word;
bitOffset : Cardinal;
bitInfoHeader : Cardinal;
bitwidth : integer;
bitheight : integer;
bitplanes : word;
bitNuOfPix : word;
bitCompression : Cardinal;
bitSizeImage : Cardinal;
bitXPixMeter : integer;
bitYPixMeter : integer;
bitColorsUsed : Cardinal;
bitImportantColors : Cardinal;
end;
PBitmapHeader = ^TBitmapHeader;

var
ms1 , ms2 : TMemoryStream;
Buffer1, Buffer2 : pointer;
BInfo : TBITMAPINFO;
PBH : PBitmapHeader;
begin
try
ms1 := TMemoryStream.Create;

try
ms2 := TMemoryStream.Create;


B1.SaveToStream(ms1); // Bitmap 1 in den Stream 1
B2.SaveToStream(ms2); // Bitmap 2 in den Stream 2

try
GetMem(Buffer1 , ms1.Size + 1);
FillChar(Buffer1^ , SizeOf(Buffer1) , #0);
PBH := Buffer1; // Bitmap Header auf den Buffer der ersten Bitmap
try
GetMem(Buffer2 , ms2.Size + 1);
FillChar(Buffer2^ , SizeOf(Buffer2) , #0);

ms1.Position := 0; // Auf den Anfan des Stream - Wichtig !
ms1.ReadBuffer(Buffer1^ , ms1.Size); //Stream1 in den Buffer 1 schreiben

PBH^.bitSize := ms1.Size + ms2.Size - 54; // Neue Header Info Grösse in den Buffer 1 schreiben
PBH^.bitheight := B1.Height + B2.Height; // das gleiche mit der Höhe

ms2.Position := 54; // Position ohne den Heder von Bitmap 2

 ms2.ReadBuffer(Buffer2^ , ms2.Size -54);// und inden den Buffer 2

ms1.Position := 0;
ms1.WriteBuffer(Buffer1^, ms1.Size);
ms1.SetSize(ms1.Size + ms2.Size);

 // Neue grösse der Bitmap in den Stream setzen
 ms1.WriteBuffer(Buffer2^, ms2.Size);

ms1.Position := 0;

Result := TBitmap.Create;
Result.LoadFromStream(ms1);


finally
 FreeMem(Buffer2);
end;
finally
 FreeMem(Buffer1);
end;
finally
  ms2.Free;
end;
finally
  ms1.Free;
end;
end;
und so geht es echt schnell.

DaddyH warum nicht mit draw gute frage.
ich hatte es so im kopf durch das clock beispiel
und ich wusste da kommt noch was mit streams
Martin MIchael

Geändert von ATS3788 (16. Feb 2012 um 14:57 Uhr) Grund: falscher Name
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:29 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