对象的扩展方法
Extension method on Objects
我有兴趣在 Bitmap
对象上创建一个扩展方法,这样我就可以像这样简单地调用它:
Bitmap bmp = new Bitmap(...);
bmp.GrayScale();
生成的 bmp
为灰度。
目前我有一个扩展方法 Bitmap GrayScale(this Bitmap bmp)
但要使用它我不得不说 bmp = bmp.GrayScale()
它有效,但我想使用 bmp = bmp.
符号来消除。
谢谢
Disclaimer: I don't regard this as an answer per se but just the fix to the code that gave me grey hairs.
@diiN_
是对的。我的代码的问题在于,它在内部创建了另一个 Bitmap
对象,该对象基本上是图像处理的基础。然后返回这个对象。灰度未应用于我的原始对象。提供的 link 非常有帮助。
public static void SetGrayPalette(this Bitmap bmpImage)
{
ColorPalette palette = bmpImage.Palette;
for (int i = 0; i < palette.Entries.Length; i++)
{
palette.Entries[i] = Color.FromArgb(i, i, i);
}
bmpImage.Palette = palette;
}
原来代码是这样的:
public static void SetGrayPalette(this Bitmap bmpImage)
{
ColorPalette palette = bmpImage.Palette;
Bitmap target = new Bitmap(bmpImage.Width, bmpImage.Height);
for (int i = 0; i < palette.Entries.Length; i++)
{
palette.Entries[i] = Color.FromArgb(i, i, i);
}
target.Palette = palette;
return target;
}
我有兴趣在 Bitmap
对象上创建一个扩展方法,这样我就可以像这样简单地调用它:
Bitmap bmp = new Bitmap(...);
bmp.GrayScale();
生成的 bmp
为灰度。
目前我有一个扩展方法 Bitmap GrayScale(this Bitmap bmp)
但要使用它我不得不说 bmp = bmp.GrayScale()
它有效,但我想使用 bmp = bmp.
符号来消除。
谢谢
Disclaimer: I don't regard this as an answer per se but just the fix to the code that gave me grey hairs.
@diiN_
是对的。我的代码的问题在于,它在内部创建了另一个 Bitmap
对象,该对象基本上是图像处理的基础。然后返回这个对象。灰度未应用于我的原始对象。提供的 link 非常有帮助。
public static void SetGrayPalette(this Bitmap bmpImage)
{
ColorPalette palette = bmpImage.Palette;
for (int i = 0; i < palette.Entries.Length; i++)
{
palette.Entries[i] = Color.FromArgb(i, i, i);
}
bmpImage.Palette = palette;
}
原来代码是这样的:
public static void SetGrayPalette(this Bitmap bmpImage)
{
ColorPalette palette = bmpImage.Palette;
Bitmap target = new Bitmap(bmpImage.Width, bmpImage.Height);
for (int i = 0; i < palette.Entries.Length; i++)
{
palette.Entries[i] = Color.FromArgb(i, i, i);
}
target.Palette = palette;
return target;
}