vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
[VB6] Problem mit Tranzparenz in PictureBox 
Autor: ProofP
Datum: 14.05.06 14:10

Hallo Leute!
Ich bin neu hier und hab folgendes Problem:
ich hab grad seit längerer Zeit wieder mit VB (6) angefangen was zu proggen, und will ein kleines Minigame schreiben.
Soweit funzt auch alles, aber ich hab da son Paar BMPs, die müssen tranzparent werden.
D.h., dass die Umgebungsfarbe (in meinem Fall d. braun) weggeschnitten wird. Dazu hab ich auf meiner Platte folgenden Code gefunden (in einem Modul):

Public Declare Function GetDC Lib "User32" (ByVal hwnd As Long) _
      As Long
 
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _
      As Long) As Long
 
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _
      As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _
      As Long) As Long
 
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _
      As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
      ByVal nCombineMode As Long) As Long
 
Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, _
      ByVal x As Long, ByVal y As Long) As Long
 
Public Declare Function SetWindowRgn Lib "User32" (ByVal hwnd _
      As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
 
 
Public cmdDc As Long
 
Public Function picTranz(cpic As PictureBox) As Long
 Dim lHoch As Long
 Dim lBreit As Long
 Dim lTemp As Long
 Dim lSkin As Long
 Dim lStart As Long
 Dim lZeile As Long
 Dim lSpalte As Long
 Dim lBackColor As Long
 lSkin = CreateRectRgn(0, 0, 0, 0)
 With cpic
  lHoch = .Height / Screen.TwipsPerPixelY
  lBreit = .Width / Screen.TwipsPerPixelX
  lBackColor = GetPixel(.hDC, 0, 0)
  For lZeile = 0 To lHoch - 1
   lSpalte = 0
   Do While lSpalte < lBreit
    Do While lSpalte < lBreit And GetPixel(.hDC, lSpalte, lZeile) = lBackColor
     lSpalte = lSpalte + 1
    Loop
    If lSpalte < lBreit Then
     lStart = lSpalte
     Do While lSpalte < lBreit And GetPixel(.hDC, lSpalte, lZeile) <> lBackColor
      lSpalte = lSpalte + 1
     Loop
     If lSpalte > lBreit Then lSpalte = lBreit
      lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1)
      Call CombineRgn(lSkin, lSkin, lTemp, 2)
      Call DeleteObject(lTemp)
     End If
   Loop
  Next lZeile
 End With
 picTranz = lSkin
End Function
 
Public Sub picTransparent(cpic As PictureBox)
 Dim lSkin As Long
 With cpic
  .Visible = True
  .BorderStyle = 0
  .AutoRedraw = True
  .AutoSize = True
  lSkin = picTranz(cpic)
  Call SetWindowRgn(cpic.hwnd, lSkin, True)
 End With
End Sub
funzt soweit auch alles. Allerdings hab ich nun eine kleine Animation drin. D.h., dass alle 100 Millisekunden muss der Tranzparente Bereich geändert werden. Das mach ich mit nem Timer. Wenn ich da aber nun reinschreibe, das er für alle Bilder die Transparenz immer wieder neu berechnen soll, hab ich nur noch ein besseres Standbild :-C

Also dacht ich mir, dass ich beim laden der Form die Schablone für alle Bilder vorwegberechne und die dann nur noch zu laden brauch.

Aber was ich auch mache, ich krig das net hin *lol*
Ich hab da irgendwie ein totales Blackout, hoffe, dass ihr mir helfen könnt!!!

Danke!

_________________________________________________________
www.proofs-site.de.vu
Meine VB-Seite!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
[VB6] Problem mit Tranzparenz in PictureBox1.043ProofP14.05.06 14:10
Re: [VB6] Problem mit Tranzparenz in PictureBox637Zardoz14.05.06 22:18
Re: [VB6] Problem mit Tranzparenz in PictureBox613ProofP15.05.06 15:44
Re: [VB6] Problem mit Tranzparenz in PictureBox649ProofP15.05.06 15:45
Re: [VB6] Problem mit Tranzparenz in PictureBox608Zardoz15.05.06 15:56
Re: [VB6] Problem mit Tranzparenz in PictureBox608ProofP18.05.06 14:46
Re: [VB6] Problem mit Tranzparenz in PictureBox667Zardoz20.05.06 00:51
Re: [VB6] Problem mit Tranzparenz in PictureBox627ProofP22.05.06 17:40
Re: [VB6] Problem mit Tranzparenz in PictureBox1.058Zardoz30.05.06 22:33
Re: [VB6] Problem mit Tranzparenz in PictureBox619ProofP17.06.06 21:04

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel