.Net Winform 实现CSS3.0 泼墨画效果(示例代码)

 更新时间:2024年12月18日 09:59:11   作者:一包烟电脑面前做一天  
这篇文章主要介绍了.Net Winform 实现CSS3.0 泼墨画效果,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧

效果图

代码

private unsafe void BlendImages1(Bitmap img1, Bitmap img2)
{
    // 确定两个图像的重叠区域
    Rectangle rect = new Rectangle(0, 0,
        Math.Min(img1.Width, img2.Width),
        Math.Min(img1.Height, img2.Height));
    // 创建输出图像,尺寸为重叠区域大小
    Bitmap blendedImage = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);
    // Lock the bits of each image and get the BitmapData.
    BitmapData data1 = img1.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
    BitmapData data2 = img2.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
    BitmapData dataBlended = blendedImage.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
    int bytesPerPixel = 4; // For Format32bppArgb
    int stride1 = data1.Stride;
    int stride2 = data2.Stride;
    int strideBlended = dataBlended.Stride;
    byte* ptr1 = (byte*)data1.Scan0.ToPointer();
    byte* ptr2 = (byte*)data2.Scan0.ToPointer();
    byte* ptrBlended = (byte*)dataBlended.Scan0.ToPointer();
    for (int y = 0; y < rect.Height; ++y)
    {
        byte* rowPtr1 = ptr1 + y * stride1;
        byte* rowPtr2 = ptr2 + y * stride2;
        byte* rowPtrBlended = ptrBlended + y * strideBlended;
        for (int x = 0; x < rect.Width; ++x)
        {
            int pixelOffset = x * bytesPerPixel;
            if (pixelOffset + bytesPerPixel <= Math.Abs(stride1) &&
                pixelOffset + bytesPerPixel <= Math.Abs(stride2) &&
                pixelOffset + bytesPerPixel <= Math.Abs(strideBlended))
            {
                rowPtrBlended[pixelOffset] = (byte)(255 - ((255 - rowPtr1[pixelOffset]) * (255 - rowPtr2[pixelOffset]) >> 8)); // B
                rowPtrBlended[pixelOffset + 1] = (byte)(255 - ((255 - rowPtr1[pixelOffset + 1]) * (255 - rowPtr2[pixelOffset + 1]) >> 8)); // G
                rowPtrBlended[pixelOffset + 2] = (byte)(255 - ((255 - rowPtr1[pixelOffset + 2]) * (255 - rowPtr2[pixelOffset + 2]) >> 8)); // R
                rowPtrBlended[pixelOffset + 3] = (byte)255; // A
            }
        }
    }
    // Unlock the bits of each image after processing.
    img1.UnlockBits(data1);
    img2.UnlockBits(data2);
    blendedImage.UnlockBits(dataBlended);
    // Display the blended image.
    pictureBoxResult.Image = blendedImage;
}

素材

到此这篇关于.net winform 实现CSS3.0 泼墨画效果的文章就介绍到这了,更多相关.net winform CSS3.0 泼墨画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • .NET中实现对象数据映射示例详解

    .NET中实现对象数据映射示例详解

    这篇文章主要为大家介绍了.NET中实现对象数据映射示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • asp.net 自制的单选、多选列表实现代码

    asp.net 自制的单选、多选列表实现代码

    在ASP.NET的页面上,ListBox最终是渲染成select元素,而CheckListBox最终被渲染成div或者是table,使得二者的样式无法统一,或者说要统一很麻烦。
    2009-08-08
  • asp.net core 属性路由和约定路由的实现

    asp.net core 属性路由和约定路由的实现

    ASP.NET Core中的WebAPI路由用于映射客户端请求的URL到服务器端的控制器和操作方法,路由分为基于属性的路由和约定路由两种方式,本文就来介绍一下,感兴趣的可以了解一下
    2025-01-01
  • asp.net 中文字符串提交乱码的解决方法

    asp.net 中文字符串提交乱码的解决方法

    现在为一家工作室做网站,在登陆模块中涉及到前端页面通过AJAX传递中文的用户名和字母的密码到后台验证,然后再把验证后的信息返回到前端的过程。
    2009-11-11
  • ASP.NET实现根据IP获取省市地址的方法

    ASP.NET实现根据IP获取省市地址的方法

    这篇文章主要介绍了ASP.NET实现根据IP获取省市地址的方法,主要基于QQwry.dat纯真IP数据库来实现这一功能,非常实用,需要的朋友可以参考下
    2014-10-10
  • .NET CORE HttpClient的使用方法

    .NET CORE HttpClient的使用方法

    这篇文章主要给大家介绍了关于.NET CORE HttpClient的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用.NET CORE具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • asp.net实现的DES加密解密操作示例

    asp.net实现的DES加密解密操作示例

    这篇文章主要介绍了asp.net实现的DES加密解密操作,结合具体实例形式分析了asp.net实现DES加密与解密算法的实现技巧,需要的朋友可以参考下
    2017-07-07
  • asp.net MVC利用ActionFilterAttribute过滤关键字的方法

    asp.net MVC利用ActionFilterAttribute过滤关键字的方法

    这篇文章主要介绍了asp.net MVC利用ActionFilterAttribute过滤关键字的方法,结合实例形式分析了ActionFilterAttribute过滤关键字的原理与相关实现技巧,需要的朋友可以参考下
    2016-03-03
  • asp.net操作Word实现批量替换

    asp.net操作Word实现批量替换

    这篇文章主要介绍了asp.net操作Word实现批量替换的方法,需要的朋友可以参考下
    2015-10-10
  • 解析在.net中使用XSLT转换xml文档的示例详解

    解析在.net中使用XSLT转换xml文档的示例详解

    本篇文章是对在.net中使用XSLT转换xml文档的示例进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论