Source/ImageHelper.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace DevComponents.DotNetBar
{
#if FRAMEWORK20
internal static class ImageHelper
#else
internal class ImageHelper
#endif
{
public static Bitmap CreateReflectionImage(Image inputImage)
{
if (inputImage == null) return null;
Bitmap tmp = new Bitmap(inputImage.Width, inputImage.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(tmp))
g.DrawImage(inputImage, 0, 0, inputImage.Width, inputImage.Height);
Bitmap image = tmp;
image.RotateFlip(RotateFlipType.Rotate180FlipX);
Bitmap returnMap = new Bitmap(image.Width, image.Height,
PixelFormat.Format32bppArgb);
BitmapData bitmapData1 = image.LockBits(new Rectangle(0, 0,
image.Width, image.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
BitmapData bitmapData2 = returnMap.LockBits(new Rectangle(0, 0,
returnMap.Width, returnMap.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
unsafe
{
byte* imagePointer1 = (byte*)bitmapData1.Scan0;
byte* imagePointer2 = (byte*)bitmapData2.Scan0;
int strideOffset = bitmapData1.Stride - (bitmapData1.Width * 4);
int height = bitmapData1.Height, width = bitmapData1.Width;
for (int i = 0; i < height; i++)
{
int alpha = Math.Max(195, (int)(265 * ((i + bitmapData1.Height * .4) / (float)bitmapData1.Height)));
for (int j = 0; j < width; j++)
{
imagePointer2[0] = imagePointer1[0];
imagePointer2[1] = imagePointer1[1];
imagePointer2[2] = imagePointer1[2];
imagePointer2[3] = (byte)(Math.Max(0, imagePointer1[3] - alpha));
//4 bytes per pixel
imagePointer1 += 4;
imagePointer2 += 4;
}
//4 bytes per pixel
imagePointer1 += strideOffset;
imagePointer2 += strideOffset;
}
}
returnMap.UnlockBits(bitmapData2);
image.UnlockBits(bitmapData1);
return returnMap;
}
后面还有 58 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。