如何使 PictureBox 使用最近邻重采样?

发布于 2024-07-04 14:11:07 字数 75 浏览 8 评论 0原文

我使用 StretchImage 因为盒子可以通过分割器调整大小。 看起来默认是某种平滑的双线性过滤,导致我的图像模糊并具有莫尔图案。

I am using StretchImage because the box is resizable with splitters. It looks like the default is some kind of smooth bilinear filtering, causing my image to be blurry and have moire patterns.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏日浅笑〃 2024-07-11 14:11:07

我怀疑您必须通过 Image 类和 DrawImage 函数手动调整大小,并响应 PictureBox 上的调整大小事件。

I suspect you're going to have to do the resizing manually thru the Image class and DrawImage function and respond to the resize events on the PictureBox.

澜川若宁 2024-07-11 14:11:07

在 .net 中调整图像大小时,System.Drawing.Drawing2D.InterpolationMode 提供以下调整大小方法:

  • Bicubic
  • Bilinear
  • High
  • HighQualityBicubic
  • HighQualityBilinear
  • Low
  • NearestNeighbor
  • Default

When resizing an image in .net, the System.Drawing.Drawing2D.InterpolationMode offers the following resize methods:

  • Bicubic
  • Bilinear
  • High
  • HighQualityBicubic
  • HighQualityBilinear
  • Low
  • NearestNeighbor
  • Default
随波逐流 2024-07-11 14:11:07

我也需要这个功能。 我创建了一个继承 PictureBox 的类,重写 OnPaint 并添加一个属性以允许设置插值模式:

using System.Drawing.Drawing2D;
using System.Windows.Forms;

/// <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);
    }
}

I needed this functionality also. I made a class that inherits PictureBox, overrides OnPaint and adds a property to allow the interpolation mode to be set:

using System.Drawing.Drawing2D;
using System.Windows.Forms;

/// <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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文