Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Mehrere Canvas zu einem zusammenfügen und speichern (https://www.delphipraxis.net/80657-mehrere-canvas-zu-einem-zusammenfuegen-und-speichern.html)

overlord99 13. Nov 2006 11:48


Mehrere Canvas zu einem zusammenfügen und speichern
 
Moin leute,

hab da ein Problem,
bin absoluter delphi-NoOb

ich habe um genau zu sein 4 canvas die ich untereinander in einem anderen canvas anzeigen (später auch drucken und speichern) lassen will und habe
NULL
ahnung wie ich das anstellen soll.

Könnt mir da jemand helfen,

Danke schonmal

Gruß,
Overlord :???:

SirThornberry 13. Nov 2006 12:56

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
das einfachste wäre wenn du sie auf ein 5tes Canvas kopierst.
Das kopieren geht recht einfach mit BitBlt

overlord99 14. Nov 2006 10:05

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
Die idee hatte ich auch schon.
Allerdings hab ichs noch nicht geschafft dass die einzelnen canvas untereinander in dem 5. canvas angezeigt werden...sie werden immer in die obere linke ece gesetzt und so überdeckt...

bin ich richtig in der annahme,dass BitBlt ein hilfsprogramm (bzw addon) für delphi ist?
Denn ich brauche das für ein schulproject und wir dürfen keinerlei hilfen benutzen.

Gruß

SirThornberry 14. Nov 2006 10:14

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
bitblt ist eine Windowsfunktion welche in der Unit "windows" declariert ist und somit immer verfügbar ist mit der Standardinstallation. Du schreibst bisher das du mehrere Canvas hast, zu was gehören aber diese Canvas? Zu einem TBitmap, TPictiure, TImage etc.? Nur mit Canvas hast du das Problem heraus zu finden wie hoch die einzelnen bilder sind.
Delphi-Quellcode:
var
  lTop: Integer;
begin
  lTop := 0;

  BitBlt(ZielCanvas.Handle, 0, lTop, Quellbildbreite1, Quellbildhoehe1, QuellCanvas1.Handle, 0, 0, SRCCOPY);
  lTop := lTop + Quellbildhoehe1;

  BitBlt(ZielCanvas.Handle, 0, lTop, Quellbildbreite2, Quellbildhoehe2, QuellCanvas2.Handle, 0, 0, SRCCOPY);
  lTop := lTop + Quellbildhoehe2;

  BitBlt(ZielCanvas.Handle, 0, lTop, Quellbildbreite3, Quellbildhoehe3, QuellCanvas3.Handle, 0, 0, SRCCOPY);

overlord99 19. Nov 2006 15:22

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
Also die canvas sind TImage.
Und ich weiß auch die genaue größe der einzelnen canvas...sie sind 500pixel lang und 125pixel hoch.

DP-Maintenance 19. Nov 2006 17:54

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphithema -> Delphi Sparte

overlord99 28. Nov 2006 09:51

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
Kann mir keiner hier weiterhelfen??
:(

SirThornberry 28. Nov 2006 09:54

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
Ich hatte dir die Lösung doch schon gepostet. Wenn du versuchst den Quelltext zu verstehen und es gelingt dir solltest du kein Problem haben. Es macht aber keinen Sinn dir eine Lösung zu schreiben die du nur kopieren musst weil du dann gar nix lernst (und die von mir gepostete Lösung ist fast zum 1 zu 1 kopieren)

overlord99 2. Dez 2006 20:32

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
OK, ich denke das funktioniert, danke...kann diese Funktion in der Hilfe aber nicht finden, könntest du mir also sagen wie die Funktion aufgebaut ist? Z.B: dieses "Handle" und die ganzen Nullen? Wäre echt nett wenn das nochma jemand erklären würde...

Matze 2. Dez 2006 20:51

Re: Mehrere Canvas zu einem zusammenfügen und speichern
 
BDS-Hilfe:
BOOL BitBlt(
HDC hdcDest, // handle to destination DC
int nXDest, // x-coord of destination upper-left corner
int nYDest, // y-coord of destination upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
HDC hdcSrc, // handle to source DC
int nXSrc, // x-coordinate of source upper-left corner
int nYSrc, // y-coordinate of source upper-left corner
DWORD dwRop // raster operation code
);


oder auch da:

MSDN
BOOL BitBlt(
HDC hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
HDC hdcSrc,
int nXSrc,
int nYSrc,
DWORD dwRop
);


Zu finden hier: MSDN-Library durchsuchenbitblt


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 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-2025 by Thomas Breitkreuz