Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   teil eines bitmaps in ein anderes kopieren (https://www.delphipraxis.net/117594-teil-eines-bitmaps-ein-anderes-kopieren.html)

lbccaleb 21. Jul 2008 20:28


teil eines bitmaps in ein anderes kopieren
 
hy ther,


also ich möchte aus einem teil eines bitmaps, ein neues erstellen!
ich habe als ausgangsbild, ein bitmap mit den maßen 8x464!
ich möchte das bild in 58 teile aufteilen, also jedes entstandene bild soll dann 8x8 sein!



dafür hab ich folgende funktion geschriebn bei der index das bild ist, was zurückgeliefert wird!



edit: nach einigen berichtigungen, bin ich nun bei folgendem source angekommen, hab nochmal nachgeschlagen und brauche bei result und sourcebitmap ein devicekontext, wo aber nehm ich mir das her??

Delphi-Quellcode:
function GetBitmapFromTable(SourceBitmap: HBitmap; index: integer): HBitmap;
  begin;
    if SourceBitmap <> 0 then
      begin
        Result := SourceBitmap;
        SetBitmapDimensionEx(Result, 8, 8, 0);
        BitBlt(Result, (index * 8), 8, 8, 8, SourceBitmap, 0, 0, SRCCOPY);
      end;
  end;
aber bitblt gibt mir immer 0 zurück, woran kann das liegen??

edit: vom ganzen probieren haben sich paar fehler eingeschlichen^^

Sanchez 21. Jul 2008 20:34

Re: teil eines bitmaps in ein anderes kopieren
 
Hi Martin,

Du gibst ein Bitmap mit, weist dem Result das übergebene Bitmap zu. Dann setzt du das Bitmap (auf das du jetzt mit SourceBitmapH und auch mit Result referenzierst) auf die Dimension 8*8. Anschließend kopierst du einen 8*8 Ausschnitt aus dem Bitmap auf sich selbst. Wenn Index > 0 ist, dann ist der Ausschnitt gar nicht mehr am Quellbitmap vorhanden.

Du musst auf alle Fälle fürs Result ein eigenes Bitmap erzeugen.

lg,
daniel

lbccaleb 21. Jul 2008 20:38

Re: teil eines bitmaps in ein anderes kopieren
 
Zitat:

Zitat von Sanchez
Hi Martin,

Du gibst ein Bitmap mit, weist dem Result das übergebene Bitmap zu. Dann setzt du das Bitmap (auf das du jetzt mit SourceBitmapH und auch mit Result referenzierst) auf die Dimension 8*8. Anschließend kopierst du einen 8*8 Ausschnitt aus dem Bitmap auf sich selbst. Wenn Index > 0 ist, dann ist der Ausschnitt gar nicht mehr am Quellbitmap vorhanden.

Du musst auf alle Fälle fürs Result ein eigenes Bitmap erzeugen.

lg,
daniel

das oben mit dem h war schreibfehler, wie erzeug ich das denn am besten??? und wieso ist der kopierende auschnitt nicht mehr auf dem bild??? das ausgangsbild ist doch gross genug, und ich will ihm ja nur sagen ab wann er von dem bild kopieren soll

wie würdest du das machen??

Namenloser 22. Jul 2008 00:18

Re: teil eines bitmaps in ein anderes kopieren
 
BitBlt erwartet kein hBitmap, sondern ein hDC.

roga 22. Jul 2008 00:29

Re: teil eines bitmaps in ein anderes kopieren
 
...und sollte es nicht so sei...

Delphi-Quellcode:
  BitBlt(Result, 0, (index * 8), 8, 8, SourceBitmap, 0, 0, SRCCOPY);
...da das QuellBitmap 8x464 ist ??

lbccaleb 22. Jul 2008 16:59

Re: teil eines bitmaps in ein anderes kopieren
 
Zitat:

Zitat von NamenLozer
BitBlt erwartet kein hBitmap, sondern ein hDC.

OK, wie muss ich das also genau machen??? wo bekomm ich denn ein hdc her?? kenn mich damit nicht aus...




Zitat:

Zitat von roga
...und sollte es nicht so sei...

Delphi-Quellcode:
  BitBlt(Result, 0, (index * 8), 8, 8, SourceBitmap, 0, 0, SRCCOPY);
...da das QuellBitmap 8x464 ist ??


ja genau, war schon spät.. ;-)

DeddyH 22. Jul 2008 17:07

Re: teil eines bitmaps in ein anderes kopieren
 
Ein hDC wäre z.B. Bitmap.Canvas.Handle.

lbccaleb 22. Jul 2008 17:10

Re: teil eines bitmaps in ein anderes kopieren
 
Zitat:

Zitat von DeddyH
Ein hDC wäre z.B. Bitmap.Canvas.Handle.

mhh und wenn ich kein tbitmap hab??

DeddyH 22. Jul 2008 17:19

Re: teil eines bitmaps in ein anderes kopieren
 
Dann musst Du Dir den Devicecontext anders besorgen.

lbccaleb 22. Jul 2008 17:29

Re: teil eines bitmaps in ein anderes kopieren
 
ok aber wie genau denn, und vor allem von was/wo soll ich ein devicekontext erzeugen oder herholen??


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Seite 1 von 2  1 2      

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