elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Funciones útiles con gráficos (GDI+)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones útiles con gráficos (GDI+)  (Leído 1,996 veces)
ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Funciones útiles con gráficos (GDI+)
« en: 4 Septiembre 2012, 16:09 pm »

Ahí va una lista de funciones en vb.net para efectuar las operaciones con imágenes más simples pero más necesarias para usar el interface GDI+. Al usar múltiples capas, por ejemplo en un personaje con ropa donde provienen de diferentes imágenes es una buena idea usar la función add_layer para superponer las dos imágenes y utilizar en adelante la imágen acoplada, así sustituimos 2 pasadas de dibujo, o las que nos sean necesarias por tan sólo una. Otra buena idea es usar la carga con resolución fija, para así disponer de imágenes más ligeras de manejar y por lo tanto de dibujar. Dado que las funciones de dibujo de texto requieren muchos parámetros en el interface gdi+ incluyo también varias funciones de rasterizado de texto, las cuales devuelven una imágen con el texto impreso. Las funciones están sobrecargadas, hay dos o tres versiones de cada una con diferente número de parámetros.
Cualquier duda me preguntais.

Citar
'leer una imágen desde archivo
Public Function read_image(ByVal file As String) As System.Drawing.Bitmap
        Dim img As New Bitmap(file)
        Return img
    End Function

    Public Function read_image(ByVal file As String, ByVal sizex As Integer, ByVal sizey As Integer) As System.Drawing.Bitmap
        Dim img As New Bitmap(file)
        Dim b As New Bitmap(sizex, sizey)
        Dim bg As Graphics = Graphics.FromImage(b)
        bg.DrawImage(img, New Rectangle(New Point(0, 0), New Size(sizex, sizey)), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)
        Return b
    End Function

'redimensionar una imágen
    Public Function resize_bmp(ByVal img As Bitmap, ByVal sizex As Integer, ByVal sizey As Integer) As Bitmap
        Dim b As New Bitmap(sizex, sizey)
        Dim bg As Graphics = Graphics.FromImage(b)
        bg.DrawImage(img, New Rectangle(New Point(0, 0), New Size(sizex, sizey)), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)
        Return b
    End Function

    Public Function resize_bmp(ByVal img As Bitmap, ByVal size As Size) As Bitmap
        Dim b As New Bitmap(size.Width, size.Height)
        Dim bg As Graphics = Graphics.FromImage(b)
        bg.DrawImage(img, New Rectangle(New Point(0, 0), New Size(size.Width, size.Height)), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)
        Return b
    End Function

    ' extraer una porción de una imágen
    ' image = imagen a recortar
    ' cuadriculax y cuadriculay = número de sectores por cada dimensión
    ' sectorx y sectory = vector puntero de la selección
    Public Function get_portion(ByVal image As System.Drawing.Bitmap, ByVal cuadriculax As Short, ByVal cuadriculay As Short, ByVal sectorx As Integer, ByVal sectory As Integer) As System.Drawing.Bitmap
        Dim img As New Bitmap(CInt(image.Size.Width / cuadriculax), CInt(image.Size.Height / cuadriculay))
        'Dim b As New Bitmap(CInt(image.Size.Width / cuadriculax), CInt(image.Size.Height / cuadriculay))
        Dim bg As Graphics = Graphics.FromImage(img)
        Dim tmpx As Integer = (image.Size.Width / cuadriculax) * sectorx
        Dim tmpy As Integer = (image.Size.Height / cuadriculay) * sectory
        Dim port As New Rectangle(New System.Drawing.Point(0, 0), New Size(New Point(image.Size.Width / cuadriculax, image.Size.Height / cuadriculay)))
        bg.DrawImage(image, port, tmpx, tmpy, CInt(port.Size.Width), CInt(port.Size.Height), GraphicsUnit.Pixel)
        Return img
    End Function

    Public Function get_portion(ByVal image As System.Drawing.Bitmap, ByVal cuadricula As System.Drawing.Size, ByVal sector As System.Drawing.Size) As System.Drawing.Bitmap
        Dim img As New Bitmap(CInt(image.Size.Width / cuadricula.Width), CInt(image.Size.Height / cuadricula.Height))
        'Dim b As New Bitmap(CInt(image.Size.Width / cuadricula.Width), CInt(image.Size.Height / cuadricula.Height))
        Dim bg As Graphics = Graphics.FromImage(img)
        Dim tmpx As Integer = (image.Size.Width / cuadricula.Width) * sector.Width
        Dim tmpy As Integer = (image.Size.Height / cuadricula.Height) * sector.Height
        Dim port As New Rectangle(New System.Drawing.Point(0, 0), New Size(New Point(image.Size.Width / cuadricula.Width, image.Size.Height / cuadricula.Height)))
        bg.DrawImage(image, port, tmpx, tmpy, CInt(port.Size.Width), CInt(port.Size.Height), GraphicsUnit.Pixel)
        Return img
    End Function

' sobredibujar una imágen sobre otra
    Public Function layer_sum(ByVal layer1 As Bitmap, ByVal layer2 As Bitmap) As Bitmap
        Dim bg As Graphics = Graphics.FromImage(layer1)
        bg.DrawImage(layer2, New Point(0, 0))
        Return layer1
    End Function
    Public Function layer_sum(ByVal layer1 As Bitmap, ByVal layer2 As Bitmap, ByVal offsetx As Integer, ByVal offsety As Integer) As Bitmap
        Dim bg As Graphics = Graphics.FromImage(layer1)
        bg.DrawImage(layer2, New Point(offsetx, offsety))
        Return layer1
    End Function

' dibujar una imágen de texto rasterizado
    Public Function get_text_layer(ByVal size As System.Drawing.Size, ByVal text As String) As System.Drawing.Bitmap
        Dim img As New Bitmap(size.Width, size.Height)
        Dim bg As Graphics = Graphics.FromImage(img)
        bg.DrawString(text, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, New Point(1, -1))
        bg.DrawString(text, New Font("Arial", 12, FontStyle.Bold), Brushes.White, New Point(0, 0))
        Return img
    End Function

    Public Function get_text_layer(ByVal sizex As Integer, ByVal sizey As Integer, ByVal text As String) As System.Drawing.Bitmap
        Dim img As New Bitmap(sizex, sizey)
        Dim bg As Graphics = Graphics.FromImage(img)
        bg.DrawString(text, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, New Point(1, -1))
        bg.DrawString(text, New Font("Arial", 12, FontStyle.Bold), Brushes.White, New Point(0, 0))
        Return img
    End Function

    Public Function get_text_layer(ByVal sizex As Integer, ByVal sizey As Integer, ByVal text As String, ByVal fontsize As Integer) As System.Drawing.Bitmap
        Dim img As New Bitmap(sizex, sizey)
        Dim bg As Graphics = Graphics.FromImage(img)
        bg.DrawString(text, New Font("Arial", fontsize, FontStyle.Bold), Brushes.Black, New Point(1, -1))
        bg.DrawString(text, New Font("Arial", fontsize, FontStyle.Bold), Brushes.White, New Point(0, 0))
        Return img
    End Function 'code by abderramah


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines