visual - startposition c#




¿Cómo hago para que un PictureBox use el remuestreo del vecino más cercano? (3)

Al cambiar el tamaño de una imagen en .net, System.Drawing.Drawing2D.InterpolationMode ofrece los siguientes métodos de cambio de tamaño:

  • Bicubic
  • Bilinear
  • Alto
  • HighQualityBicubic
  • HighQualityBilinear
  • Bajo
  • Vecino más cercano
  • Defecto

Estoy usando StretchImage porque la caja se puede cambiar de tamaño con divisores. Parece que el valor predeterminado es algún tipo de filtrado bilineal uniforme, lo que hace que mi imagen sea borrosa y tenga patrones de muaré.


Sospecho que vas a tener que hacer el cambio de tamaño manualmente a través de la clase de imagen y la función DrawImage y responder a los eventos de cambio de tamaño en el PictureBox.


Necesitaba esta funcionalidad también. Hice una clase que hereda PictureBox, anula OnPaint y agrega una propiedad para permitir que se establezca el modo de interpolación:

/// <summary>
/// Inherits from PictureBox; adds Interpolation Mode Setting
/// </summary>
public class PictureBoxWithInterpolationMode : PictureBox
{
    public InterpolationMode InterpolationMode { get; set; }

    protected override void OnPaint(PaintEventArgs paintEventArgs)
    {
        paintEventArgs.Graphics.InterpolationMode = InterpolationMode;
        base.OnPaint(paintEventArgs);
    }
}






picturebox