![]() |
Images zusammenfügen
Hallo zusammen,
ich möchte mehrere images zusammenfügen. ich habe 4 images: ImageLeft, ImageMitte, ImageRight und Image2. das ziel ist, dass aus den 3 images ImageLeft, ImageMitte, ImageRight ein image wird, das dann in image2 zu sehen ist. am anfang (ganz links) vom image2 muss sich ImageLinks befinden. dann kommt mehrmals (ca. 10 mal) imageMitte und am schluss noch einmal ImageRechts. ich habs mal so probiert:
Delphi-Quellcode:
leider funktioniert es nicht so wie es soll. in image2 wird nur imageLinks angezeigt und mehr nicht.
for a:=0 to 10 do
begin image2.picture.assign(imageLeft.picture.bitmap); image2.picture.Bitmap.Canvas.CopyRect(rect(imageLeft.Picture.width, 0, imageMitte.picture.Width + imageLeft.picture.width, imageMitte.picture.height), imageMitte.picture.bitmap.Canvas, rect(0, 0, imageMitte.picture.width, imageMitte.picture.Height)); imageleft.Picture.Bitmap := image2.Picture.Bitmap; end; kann mir jemand helfen? gruss urbanbruhin |
Re: Images zusammenfügen
Wenn die Images TImages sind, probier mal nicht immer imagex.picture sondern imagex.
|
Re: Images zusammenfügen
aber das kann doch gar nicht gehen. TImage und TPicture ist ja nicht das gleiche :gruebel:
also ich bin jetzt so weit:
Delphi-Quellcode:
die zwei images werden zwar zusammengefügt, jedoch ist hinter dem image2 noch ein weisser strich...
image2.picture.assign(imageleft.picture.bitmap);
Image2.Picture.Bitmap.Width := Image2.Picture.Bitmap.Width + imageleft.picture.bitmap.width; image2.picture.Bitmap.Canvas.CopyRect(rect(imageleft.Picture.width, 0, imagemitte.picture.Width + imageleft.picture.width, imagemitte.picture.height), imagemitte.picture.bitmap.Canvas, rect(0, 0, imagemitte.picture.width, imagemitte.picture.Height)); |
Re: Images zusammenfügen
Dann musst du halt das ganze 1 Pixel weniger machen. Und TImage hat auch eine Width, Height, Canvas usw.
|
Re: Images zusammenfügen
Sind die Images überhaupt sichtbar? Wenn nein, solltest du lieber gleich TBitmaps benutzen.
Delphi-Quellcode:
So würde es jedenfalls mit der GR32-Lib funktionieren, wahrscheinlich musst du den Code noch etwas anpassen.
// Ich gehe mal davon aus, dass alle Bitmaps die gleiche Höhe haben
procedure CombineBitmaps(ALeft, AMid, ARight, ADest: TBitmap; const AMidCount: Integer); var i: Integer; begin ADest.Height := ALeft.Height; ADest.Width := ALeft.Width + AMid.Width * AMidCount + ARight.Width; ADest.Draw(0, 0, ALeft); for i := 0 to MidCount - 1 do ADest.Draw(ALeft.Width + AMid.Width * i, 0, AMid); ADest.Draw(ADest.WIdth - ARight.Width, 0, ARight); end; Zitat:
|
Re: Images zusammenfügen
juhuu es funktioniert!! :bounce1:
vielen dank!! ich musste den code nur ein bisschen abändern, jetzt sieht er so aus:
Delphi-Quellcode:
gruss
procedure CombineBitmaps(ALeft, AMid, ARight, ADest: TBitmap; const AMidCount: Integer);
var i: Integer; begin ADest.Height := ALeft.Height; ADest.Width := ALeft.Width + AMid.Width * AMidCount + ARight.Width; ADest.Canvas.draw(0, 0, ALeft); for i := 0 to AMidCount - 1 do ADest.canvas.Draw(ALeft.Width + AMid.Width * i, 0, AMid); ADest.canvas.Draw(ADest.WIdth - ARight.Width, 0, ARight); end; urbanbruhin |
AW: Images zusammenfügen
Geht sowas auch mit jpg Bildern?
Ich habe Zwei Bilder ein großes Bild auf das ein kleineres Bild rechts unten bündig gesetzt werden soll und dann als neues Bild gespeichert werden. |
AW: Images zusammenfügen
Ich bin nicht sicher, aber IIRC kommt man an den Canvas eines JPEGImage nicht direkt heran. Aber man kann ja beide Bilder in Bitmaps umwandeln, zusammenpinseln und das Ergebnis wieder in ein JPEG zurückwandeln.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz