Autor Beitrag
DerKrasseHans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 21.03.03 23:33 
ich hab die Routine TransparentBlt aus der msimg32.dll durch folgende Deklaration in mein Projekt integriert:
ausblenden Quelltext
1:
function TransparentBlt( ... ): Boolean; stdcall; exports 'msimg32.dll' name 'TransparentBlt';					

Die Routine blittet schon schön transparent das is kein Problem; nur wird immer (unabhängig welche Werte ich für nXOrignSrc und nYOrignSrc eingebe) nur der Bereich ab (0, 0) der Quellbitmap kopiert, jeodch kann ich die Verschiebung nicht selbst definieren...
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 22.03.03 14:17 
So ist es in meiner Version deklariert:
ausblenden Quelltext
1:
function TransparentBlt(DC: HDC; p2, p3, p4, p5: Integer; DC6: HDC; p7, p8, p9, p10: Integer; p11: UINT): BOOL; stdcall; external msimg32 name 'TransparentBlt';					

_________________
Life is a bad adventure, but the graphic is really good!
DerKrasseHans Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Sa 22.03.03 18:46 
erstmal: danke für rückmeldung,
aber die deklaration war nich mein problem, die werd ich wohl richtig haben, da ich die Prozedur ohne Fehlermeldung aufrufen kann:
ausblenden Quelltext
1:
function TransparentBlt (hdcDst: HDC; DstX, DstY, DstWidth, DstHeight: Integer; hdcSrc: HDC; SrcX, SrcY, SrcWidth, SrcHeight: Integer; crTransparent: TColor): Boolean; stdcall; exports 'msimg32.dll' name 'TransparentBlt';					

Mein Problem ist folgendes:
ich möchte aus einer SrcBitmap (hdcSrc), in der sich mehrere Animationsbilder eines animierten Sprites befinden, erst ab einer bestimmten Position (SrcX, SrcY) blitten, nämlich ab dort, wo sich das Animationsbild befindet, aber irgendwie blittet die Funktion IMMER ab der Position (0, 0), egal was ich für SrcX und SrcY übergebe.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 22.03.03 19:04 
Also, XSrc und YSrc geben nicht an, wo das ganze hingerendert wird, sondern welcher Quell-Bitmap-Ausschnitt gerendert werden soll.

Ich fasse mal zusammen: du renderst Bitmap A auf B. B soll bei X, Y gerendert werden. Das legst du nicht mit SrcX und SrcY fest sondern mit DstX/Y.

Villeicht liegt das Prob auch wo anders und ich habe dich falsch verstanden. Ich habe diese Menthode noch nie verwendet, musst du wissen. Aber die wird ja genauso wie BitBlt/StretchBlt verwendet, also müsste mein Wissen hier ausreichen.

_________________
Life is a bad adventure, but the graphic is really good!
DerKrasseHans Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 26.03.03 19:47 
Jo dass es um den Ausschnitt der Quellbitmap geht war mir auch klar, mein Problem ist auch derart abstrus, dass es wahrscheinlich einfach nicht zu verstehen ist. Was aber auch völlig egal ist, weil es sich jetzt wie von geisterhand in Luft aufgelöst hat.
Es ging darum, dass ich zwar einen Quellauschnitt über SrcX und SrcY angegeben habe, dieser Auschnitt jedoch von der Routine TransparentBlt() vollkommen ignoriert wurde und die Werte für SrcX und SrcY immer auf (0, 0) gesetzt wurden.
Ich hab das Ganze jetzt bei einem Freund mal laufen lassen, und er meinte, dass mein Prog einwandfrei funktionierte.... ergo: meine msimg32.dll war im *popo*!!! Ich hab sie einfach mal neu drüber-kopiert und schwupps, es ging.... Also falls irgendjemand dasselbe Prob mit der (im Grunde derben Routine) TransparentBlt() hat, einfach neu installieren.
Grüße
Paul.