.Net Winform 实现CSS3.0 泼墨画效果(示例代码)
作者:互联网
2025-08-27
效果图

代码
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 泼墨画内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
您可能感兴趣的文章:- Winform+.Net6实现图片拖拽上传功能
- Log4net在.Net Winform项目中的使用实例详解
- Winform项目中使用FastReport.Net报表控件
- .Net6开发winform程序使用依赖注入
- VisualStudio2019中为.NET Core WinForm App启用窗体设计器
- .NET WinForm实现在listview中添加progressbar的方法
- 在WinForm和WPF中使用GMap.Net地图插件简单教程
相关标签:
ASP.NET
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
详解.NET Core如何构建一个弹性的HTTP请求机制
08/27
.NET Core使用Redis实现创建分布式锁
08/27
.NET内存管理释放的两种方式
08/27
基于.NET8实现WinFrom应用窗口自动缩放功能
08/27
浅析如何在 ASP.NET Core中实现速率限制
08/27
.NET Core 委托原理解析(最新推荐)
08/27
.NET 9 new features-Microsoft.ML.Tokenizers 库(文本标记化功能)
08/27
如何在 .NET 中使用 Tesseract 识别图片文字
08/27
ASP.NET Core Web API之Token验证的实现
08/27
asp.net core web api项目添加自定义中间件的实现
08/27
AI精选
