GdipCreateEffect、GdipBitmapApplyEffect等GDI+1.1的API函数是不是还没有封装进VS2010中啊?

laviewpbt 2012-11-16 03:11:43
GdipCreateEffect、GdipSetEffectParameters、GdipBitmapApplyEffect、GdipDeleteEffect 这四个函数可以实现高斯模糊、亮度对比度、色彩平衡,色相饱和度,曲线、色阶、红眼去除、USM锐化等功能;

GdipBitmapConvertFormat这个可以实现不同为深之间的转换,特别是真彩色转换为256色还可以使用最有调色板以及误差抖动等算法;
GdipBitmapGetHistogram可以得到图像的直方图;

这些函数都位于GDI+1.1中,并且只有在vista以上的系统中才可以使用,不过这些功能我在GDI+的 bitmap或者image 类中并没有发现对应的功能,是不是VS2010还没有封装呢,那么用过VS2012的人知道是不是已经在VS2012里有了呢?
...全文
334 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laviewpbt 2012-11-16
  • 打赏
  • 举报
回复


[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)]
public BitmapData LockBits(Rectangle rect, ImageLockMode flags, PixelFormat format, BitmapData bitmapData)
{
    GPRECT gprect = new GPRECT(rect);
    int status = SafeNativeMethods.Gdip.GdipBitmapLockBits(new HandleRef(this, base.nativeImage), ref gprect, flags, format, bitmapData);
    if (status != 0)
    {
        throw SafeNativeMethods.Gdip.StatusException(status);
    }
    return bitmapData;
}
laviewpbt 2012-11-16
  • 打赏
  • 举报
回复
嗯,我知道这些都是API,其实.net 的bitmap类其实就是GDI+的平板化API的封装,比如 bitmap的这个构造方法的代码:

public Bitmap(int width, int height, int stride, PixelFormat format, IntPtr scan0)
{
    IntSecurity.ObjectFromWin32Handle.Demand();
    IntPtr zero = IntPtr.Zero;
    int status = SafeNativeMethods.Gd[code=csharp]
ip.GdipCreateBitmapFromScan0(width, height, stride, (int) format, new HandleRef(null, scan0), out zero); if (status != 0) { throw SafeNativeMethods.Gdip.StatusException(status); } base.SetNativeImage(zero); } [/code]
宝_爸 2012-11-16
  • 打赏
  • 举报
回复
引用 1 楼 findcaiyzh 的回复:
这些函数好像都是API,得用P/Invoke调用。 可以看看这个library:
GDI PlusX (C# GDI Plus 1.1 - Effects, Histogram ...) http://csharpgdiplus11.codeplex.com/
宝_爸 2012-11-16
  • 打赏
  • 举报
回复
这些函数好像都是API,得用P/Invoke调用。 可以看看这个library:

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧