Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Maurice_Lupin en 18 Noviembre 2012, 16:32 pm



Título: F1 - Cortar una imagen VB.NET
Publicado por: Maurice_Lupin en 18 Noviembre 2012, 16:32 pm
Encontre muchos ejemplos sobre cortar un área rectangular, pero nada sobre un polígono, y antes de hacerlo pixel por pixel, queria consultar, a lo mejor alguien tiene algún link que compartir.

Ejemplo recorte rectangular:

http://www.elguille.info/NET/dotnet/trocear_imagen.htm


Saludos.


Título: Re: F1 - Cortar una imagen VB.NET
Publicado por: Keyen Night en 18 Noviembre 2012, 18:34 pm
Todo lo imaginable es posible con el GDI de .Net ;), mira este ejemplo:

Un proyecto Windows Forms vació, carga una imagen, crea un objeto GraphicPath y agrega los puntos que conforman el Polígono, obtiene la región que ocupa dicho Polígono, luego recorre cada Rectángulo que conforma la región pintando cada parte de la Imagen con ayuda de la función Offset que mueve los ejes hacia el Origen deseado (El punto desde donde se comenzara a Dibujar la Imagen) y el Destino (El punto desde donde se cortara el polígono en la imagen).

Código
  1. Imports System.Drawing.Drawing2D
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  6.  
  7.        Dim Imagen As Image = Image.FromFile("C:\Ejemplo.JPG")
  8.  
  9.        Dim Forma As New GraphicsPath
  10.  
  11.        Forma.AddPolygon(New PointF() {New PointF(10, 20), New PointF(250, 35), New PointF(150, 200)})
  12.  
  13.        Dim Poligono As New Region(Forma)
  14.  
  15.        Dim Origen As New Point(10, 10), Destino As New Point(20, 20)
  16.        Dim RectanguloOrigen As RectangleF, RectanguloDestino As RectangleF
  17.  
  18.        For Each Rectangulo As RectangleF In Poligono.GetRegionScans(New Matrix)
  19.            RectanguloOrigen = Rectangulo : RectanguloOrigen.Offset(Origen)
  20.            RectanguloDestino = Rectangulo : RectanguloDestino.Offset(Destino)
  21.            e.Graphics.DrawImage(Imagen, RectanguloOrigen, RectanguloDestino, GraphicsUnit.Pixel)
  22.        Next
  23.  
  24.    End Sub
  25.  
  26. End Class