En este mensaje muestro dos errores conocidos al dibujar una imagen con una brocha en el componente DrawingArea.
Código Común:
Ejemplo1:
Public Sub DibujarImagen1()
'La brocha de la imagen es mayor que el tamaño del lienzo
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
'La brocha de la imagen es mayor que el tamaño del lienzo
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Se muestra:
Ejemplo2:
Public Sub DibujarImagen2()
'La brocha de la imagen es más pequeña que el tamño del lienzo
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
'Vamos a hacer que la escala de la brocha de la imagen con la que vamos a pintar sea 1/4 de la original
hbrush.Scale(0.25, 0.25)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
'DibujarImagen1
DibujarImagen2
End
'La brocha de la imagen es más pequeña que el tamño del lienzo
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
'Vamos a hacer que la escala de la brocha de la imagen con la que vamos a pintar sea 1/4 de la original
hbrush.Scale(0.25, 0.25)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
'DibujarImagen1
DibujarImagen2
End
Se muestra:
Ejemplo de como mostrarla correctamente:
Private hImage As Image
Public Sub Form_Open()
Me.Title = "Mostrando Correctamente la imagen"
hImage = Image.Load("hat-640.jpg")
'Ajustamos el lienzo al tamaño de la imagen
With Lienzo
.W = hImage.W
.H = hImage.H
End With
'Ajustamos el tamaño del formulario al del lienzo
With Me
Me.W = Lienzo.W
Me.H = Lienzo.H
End With
End
Public Sub DibujarImagen()
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
DibujarImagen
End
Public Sub Form_Open()
Me.Title = "Mostrando Correctamente la imagen"
hImage = Image.Load("hat-640.jpg")
'Ajustamos el lienzo al tamaño de la imagen
With Lienzo
.W = hImage.W
.H = hImage.H
End With
'Ajustamos el tamaño del formulario al del lienzo
With Me
Me.W = Lienzo.W
Me.H = Lienzo.H
End With
End
Public Sub DibujarImagen()
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
h = Lienzo.h
w = Lienzo.W
hbrush = Paint.Image(hImage)
Paint.Brush = hbrush
'El rectangulo dibujado es del tamaño del lienzo
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
DibujarImagen
End
Ahora si queremos que nuestra imagen se ajuste al formulario podemos hacer:
Private hImage As Image
Public Sub Form_Open()
Me.Title = "Imagen se ajusta al formulario"
'Formulario al tamaño del Lienzo
With Me
.W = Lienzo.W
.H = Lienzo.H
End With
End
Public Sub DibujarImagen()
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
' Se muestran las coordenadas y tamaños para referencia
h = Lienzo.H
w = Lienzo.W
hImage = Image.Load("hat-640.jpg")
hbrush = Paint.Image(hImage)
hbrush.Translate(x, y)
hbrush.Scale(w / hImage.w, h / hImage.h)
Paint.Brush = hbrush
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
DibujarImagen
End
Public Sub Form_Resize()
'Lienzo al tamaño del Formulario
With Lienzo
.W = Me.w
.H = Me.H
End With
End
Public Sub Form_Open()
Me.Title = "Imagen se ajusta al formulario"
'Formulario al tamaño del Lienzo
With Me
.W = Lienzo.W
.H = Lienzo.H
End With
End
Public Sub DibujarImagen()
Dim x, y, w, h As Float
Dim hbrush As PaintBrush
' Se muestran las coordenadas y tamaños para referencia
h = Lienzo.H
w = Lienzo.W
hImage = Image.Load("hat-640.jpg")
hbrush = Paint.Image(hImage)
hbrush.Translate(x, y)
hbrush.Scale(w / hImage.w, h / hImage.h)
Paint.Brush = hbrush
Paint.Rectangle(x, y, w, h)
Paint.Fill
End
Public Sub Lienzo_Draw()
DibujarImagen
End
Public Sub Form_Resize()
'Lienzo al tamaño del Formulario
With Lienzo
.W = Me.w
.H = Me.H
End With
End
Y ahora el ejemplo para descargar.
Saludos
ErroresMostrandoImagen.tar.gz | ||
Descripción: | Errores y formas de mostrar una imagen con pinceles usando Paint | Descargar |
Nombre del archivo: | ErroresMostrandoImagen.tar.gz | |
Tamaño: | 107.98 KB | |
Descargado: | 58 veces |
ErroresMostrandoImagen.tar.gz | ||
Descripción: | Errores y formas de mostrar una imagen con pinceles usando Paint | Descargar |
Nombre del archivo: | ErroresMostrandoImagen.tar.gz | |
Tamaño: | 107.98 KB | |
Descargado: | 58 veces |
ErroresMostrandoImagen.tar.gz | ||
Descripción: | Errores y formas de mostrar una imagen con pinceles usando Paint | Descargar |
Nombre del archivo: | ErroresMostrandoImagen.tar.gz | |
Tamaño: | 107.98 KB | |
Descargado: | 58 veces |