TransparentBlt

07/04/2008 - 11:45 von Jürgen Schmitt | Report spam
Hi Ng,
Es existieren etliche picture-Boxen auf der Form, sowohl als
einzelne Elemente, als auch als Feld z.B. Picture3(0) - Picture3(200).
Autoredraw + Autosze = true gesetzt, scalemode = vbpixels
Warum funktionert folgendes nicht ??

Private Declare Function TransparentBlt Lib "msimg32.dll" _
(ByVal hdcDest As Long, ByVal nXOriginDest As Long, _
ByVal nYOriginDest As Long, ByVal nWidthDest As _
Long, ByVal nHeightDest As Long, ByVal hdcSrc As _
Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc _
As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc _
As Long, ByVal crTransparent As Long) As Long

Private Sub Command2_Click()
'picture1 nach picture2
Picture1.Picture = LoadResPicture(152, vbResBitmap)
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
Picture3(1).Width = Picture1.Width
Picture3(1).Height = Picture1.Height

'das hier funktioniert
Call TransparentBlt(Picture2.hdc, 0, 0, Picture1.ScaleWidth, _
Picture1.ScaleHeight, Picture1.hdc, 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite)
Picture2.Refresh

'das hier funktioniert nicht
Call TransparentBlt(Picture3(1).hdc, 0, 0, Picture1.ScaleWidth, _
Picture1.ScaleHeight, Picture1.hdc, 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite)
Picture3(1).Refresh
End Sub

Ich verstehe nicht, weshalb TransparenBlt nicht in einem Picture-array
arbeitet. Gibt es vllt. noch eine andere Möglichkeit, Bilder vom einem
Element in ein anderes zu kopieren und dabei bestimmte Farben, bzw.
Farbbereiche auszuschliessen. ??
Vielen Dank
 

Lesen sie die antworten

#1 Christian Zimmermann
08/04/2008 - 10:34 | Warnen spam
Hallo Jürgen,

Jürgen Schmitt schrieb:

Es existieren etliche picture-Boxen auf der Form, sowohl als
einzelne Elemente, als auch als Feld z.B. Picture3(0) - Picture3(200).
Autoredraw + Autosze = true gesetzt, scalemode = vbpixels
Warum funktionert folgendes nicht ??

[Code ...]

Ich verstehe nicht, weshalb TransparenBlt nicht in einem Picture-array
arbeitet. Gibt es vllt. noch eine andere Möglichkeit, Bilder vom einem
Element in ein anderes zu kopieren und dabei bestimmte Farben, bzw.
Farbbereiche auszuschliessen. ??



Dein Beispiel hat bei mir funktioniert (VB6 SP6 unter Win2k SP4 und VB5
SP3 unter Vista SP1). Habe Picture3(0) und Picture3(1) in der
Entwicklungsumgebung erstellt und 2-200 per Load-Anweisung. Generell
kann es nicht am Control-Array liegen. Der Hund muß woanders begraben
sein. Versuche das doch mal in einem leeren Projekt. Das Ergebnis sollte
das gleiche sein wie bei mir.

Gruß

Christian

Ähnliche fragen