Hej Om du är ute efter att plocka bort färgen på själva bilden så kan använda API.t "TransparentBlt" för att göra en bild transparent. Hej Hej Du skulle kunna hitta lösningen om du modifierar lite nedanstående kod:Plocka bort en färg
Om jag har en bild som jag vill ha som bakgrund i en form så är ju bilden rektangulär. Om man har en bild som är rektangulär och i den här bilden ligger ett lager som är ovalt med en färg och bakgrunden i en annan färg så vill ja att bakgrunden inte skall synas när jag kör programmet.
Hur gör jag då för att plocka bort just den bakgrundsfärgen?
MVH
MagnusSv: Plocka bort en färg
Det fungerar på det sättet att du lägger den bilden där en färg ska göras transparent i en "picturebox", du skapar sedan ännu en picturebox där du sätter den bakgrundsfärgen som ska synas.
Vid onload körs API.t och bakgrundsfärgen på bilden försvinner så att den andra bakgrunden istället blir synlig. picture1 flyttas så att den nu ligger på picture2. Picture1 kan alltså göras osynlig nu då den ist. ligger på Picture2.
Den bild som jag har använt har vit som bakgrundsfärg, jag lägger den nu på picture2, som har röd bakgrundsfärg, vilket blir den färgen som syns.
<code>
Private Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean
Private Sub Form_Load()
Picture1.AutoSize = True
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
Picture2.BackColor = vbRed
End Sub
Private Sub Picture2_Paint()
DoEvents
TransparentBlt Picture2.hdc, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite
End Sub
</code>
Hoppas du är med på hur jag menar!Sv: Plocka bort en färg
Jag skall testa och se om jag förstår, annars hör jag av mig
MVH
MagnusSv: Plocka bort en färg
Tyvärr så fungerade inte ovanstående kod. Den visar bara picture2:s färg och lämnar resten bakom. Jag kan alltså inte få fram den färg som jag vill ha synlig.Sv: Plocka bort en färg
<code>
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngColour As Long
Dim intRed As Integer
Dim intGreen As Integer
Dim intBlue As Integer
lngColour = Point(X, Y)
intRed = (lngColour And &HFF&)
intGreen = (lngColour And &HFF00&) / &H100&
intBlue = (lngColour And &HFF0000) / &H10000
Label1.BackColor = RGB(intRed, intGreen, intBlue)
' färg som skall plockas = RGB(intRed, intGreen, intBlue)
End Sub
</code>