C#Graphics.DrawImage更改我的颜色

C#Graphics.DrawImage更改我的颜色,c#,.net,system.drawing,C#,.net,System.drawing,我习惯于放大和缩小图标,但我在画图时注意到一些颜色的变化。问题不在于过滤器,因为我已经检查了图像输出,它本身看起来很好 这里有一个例子:左边是它应该是什么样子,右边是我在应用程序中看到的。 我已经创建了一个自定义ToolStripItem,并且正在使用它的OnPaint函数进行绘制。 我用于绘图的代码如下所示 e.Graphics.SmoothingMode = SmoothingMode.HighQuality; e.Graphics.Comp

我习惯于放大和缩小图标,但我在画图时注意到一些颜色的变化。问题不在于过滤器,因为我已经检查了图像输出,它本身看起来很好

这里有一个例子:左边是它应该是什么样子,右边是我在应用程序中看到的。

我已经创建了一个自定义ToolStripItem,并且正在使用它的OnPaint函数进行绘制。 我用于绘图的代码如下所示

            e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
            e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
            e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

            e.Graphics.DrawImage(Image,
                new Rectangle(
                    new Point(Width / 2 - IconSize / 2, Height / 2 - IconSize / 2),
                    new Size(IconSize, IconSize)));

更新:我已将PixelOffsetMode设置为一半,这修复了您在上述示例中看到的剪切像素,但颜色仍处于禁用状态,这会影响透明度。左边是我使用其保存功能保存的图标,并将其放置在上面绘制的图标屏幕截图的顶部

还要注意的是,这是使用不同的过滤器,因此它不喜欢上面的任何东西


屏幕截图看起来不像ToolStripItem。你在画画之前清理画布了吗?发布的代码看起来不真实:一个名为
Image
的变量?我已经检查了您提供的链接,看起来要么是预期的偏差(那里的示例输入和输出似乎也不完全相同),要么是您做得不正确(您提供的代码不够详细)@拉尔斯泰克:我试过清理,但没有任何改变。是的,我正在调整图标的大小,并将其指定给ToolStripItem的Image属性,并使用该属性自己绘制图像。@Arturudo我已经检查了它的输出,图像的大小得到了正确调整,颜色看起来也应该如此。由于某种原因,我在绘制时颜色会发生变化。您是否尝试过
平滑模式。无
像素偏移模式。无
?在我看来,由于抗锯齿,可能会发生一些事情。