como simular el efecto de espejo en vb

Iniciado por CICOLO_111234, 27 Enero 2009, 21:04 PM

0 Miembros y 1 Visitante están viendo este tema.

CICOLO_111234

hola!
kisiera saber como simular el efecto de un espejo en un image de visual basic...


salu2

LeandroA

hola dos que se me ocurren la primera la mas facil (creo) es usando lineas con AlphaBlend  e ir regulando la intensidad y la otra mas profesional dira es crear dos array de bits uno de la imagen y otro del destino y luego ir fucionado los bits en intesidad proporcinal al tamaño de la imagen.

eso si es lo que yo entiendo por efecto espejo, sino pone una imagen de lo que vos decis.

Saludos

PeterPunk77

Buenas CICOLO_111234, si lo que quieres es invertir la imagen vertical u horizontalmente lo más fácil es usar la API StretchBlt.
Aquí un pequeño ejemplo. Pon tres picture boxes y un botón en un formulario y copia este código:
Código (vb) [Seleccionar]
Option Explicit

Const ScrCopy = &HCC0020

Private Declare Function StretchBlt Lib "gdi32" ( _
    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 dwRop As Long) As Long
   
Private Declare Function PaintDesktop Lib "user32" (ByVal hdc As Long) As Long


Private Sub Command1_Click()
    'Ponemos en el Picture1 un trozo del fondo de escritorio:
    PaintDesktop Picture1.hdc
    'Espejo vertical:
    StretchBlt Picture2.hdc, 100, 0, -100, 100, Picture1.hdc, 0, 0, 100, 100, ScrCopy
    'Espejo horizontal:
    StretchBlt Picture3.hdc, 0, 100, 100, -100, Picture1.hdc, 0, 0, 100, 100, ScrCopy
End Sub

Private Sub Form_Load()
    Me.Height = 4000
    Me.Width = 4000
    Me.AutoRedraw = True
    Me.ScaleMode = vbPixels
   
    Picture1.Top = 20
    Picture1.Left = 20
    Picture1.Width = 100
    Picture1.Height = 100
    Picture1.BorderStyle = 0
   
    Picture2.Top = 20
    Picture2.Left = 120
    Picture2.Width = 100
    Picture2.Height = 100
    Picture2.BorderStyle = 0
   
    Picture3.Top = 120
    Picture3.Left = 20
    Picture3.Width = 100
    Picture3.Height = 100
    Picture3.BorderStyle = 0

    Command1.Top = 120
    Command1.Left = 120
    Command1.Width = 100
    Command1.Height = 100

End Sub


Saludos.

BlackZeroX

#3
tambien puede usar la API PlgBlt para dicha acción xP

Esto me ha dado una idea xD...¡!

Saludos
The Dark Shadow is my passion.