Sprite control VB6

Cambalinho

Power Member
eu ando a construir 1 objecto para facilitar a construção de jogos, o Sprite.
eu ando a tentar fazer transparencia no objecto(não numa cor, mas em todo o objecto). eu ja tentei fazer pixel a pixel, functionou mas dava-me 1 aspecto pixel(via pontos em branco):
transformava alguns pixel na cor que queria fazer desaparecer e depois fazia desaparecer essa cor.
eu ja tentei a função API Aphablend() mas sem resultados :( .
agora estou a fazer 1 metodo diferente: somo a imagem á cor que quero que desapareça, mas estou a receber 1 erro:
Código:
If blnTransparentImage = True Then
        For Y = 0 To UserControl.Height
            For X = 0 To UserControl.Width 'aqui uso a função para somar as 2 cores
                SetPixel UserControl.hdc, X, Y, PlusColorTransparency(GetPixel(UserControl.hdc, X, Y), GetPixel(UserControl.hdc, 0, 0), 75)
            Next X
        Next Y
    End If
a função que soma as cores:
Código:
Private Type Color
    Red As Long
    Green As Long
    Blue As Long
End Type
 
Private Function RGBValues(Color As Long) As Color 'find the rgb color values of a color
    Dim ReturnColor As Color
    With ReturnColor
        .Red = Fix(Color And 255)
        .Green = Fix((Color And 65535) / 256)
        .Blue = Fix(Color / 65536)
    End With
    RGBValues = ReturnColor
End Function
 
Public Function PlusColorTransparency(Color1 As Long, Color2 As Long, Transparency As Long) As Long
    Dim DistColor As Color
    Dim SourceColor As Color
    If Transparency < 0 Then Transparency = 0
    If Transparency > 100 Then Transparency = 100
    Transparency = (255 * Transparency) / 100
    SourceColor = RGBValues(Color1)
    DistColor = RGBValues(Color2)
    DistColor.Red = SourceColor.Red * (Transparency / 255) + DistColor.Red * (0.1 - (Transparency / 255))
    DistColor.Green = SourceColor.Green * (Transparency / 255) + DistColor.Green * (0.1 - (Transparency / 255))
    DistColor.Blue = SourceColor.Blue * (Transparency / 255) + DistColor.Blue * (0.1 - (Transparency / 255))
    PlusColorTransparency = RGB(DistColor.Red, DistColor.Green, DistColor.Blue)'aqui da-me erro
End Function
menssagem de erro: "Run-Time Error '5': Invalide procedure call or argument"
alguem me pode ajudar a resolver o problema?
obrigado
 
Tenta este modulo é velhinho e muito desactualizado mas ainda estava numa fase em que as coisas eram simples, deve ser um bom ponto de partida para o que queres fazer

DirectX 7 XP
desculpa, mas alem de eu n perceber nd do directx, o projecto dá-me erro ao entrar.
eu posso meter aqui 1 função que funciona mt bem. transforma alguns pixels em 1 cor que quero faze-la desaparecer. o problema desta função é dá 1 estilo pixel(ve-se em "pontinhos").
Código:
[LEFT]i = 0
        For Y = i - 1 To UserControl.Height
            For X = i To UserControl.Width Step 2
                If GetPixel(UserControl.hdc, X, Y) <> -1 Then SetPixel UserControl.hdc, X, Y, UserControl.BackColor
            Next X
            If i = 0 Then
                i = 1
            Else
                i = 0
            End If
        Next Y 'depois de trabalhar com a imagem(deste e outros processos) eu meto 1 cor transparente usando a propriedade maskcolor.[/LEFT]
este codigo funciona, mas funcionava mt melhor se fosse por percentagem e se fosse possivel trabalhar com outra escala. assim conseguia dar + perfeição ao meu resultado.
podes dar-me dicas?
obrigado
 
apartir do codigo, no post anterior, eu posso alterar a scala do UC e dar melhor aspecto ao resultado final?
eu estou a utilizar a escala pixel, mas queria ver se posso alterar para uma scala maior.
obrigado
 
Back
Topo