author | moel.mich |
Wed, 18 Jul 2012 22:47:30 +0000 | |
changeset 368 | 1036b453f1f6 |
permissions | -rw-r--r-- |
moel@345 | 1 |
using System; |
moel@345 | 2 |
using System.Collections.Generic; |
moel@345 | 3 |
using System.Text; |
moel@345 | 4 |
using System.Drawing; |
moel@345 | 5 |
using System.Runtime.InteropServices; |
moel@345 | 6 |
using System.Drawing.Imaging; |
moel@345 | 7 |
|
moel@345 | 8 |
namespace Aga.Controls |
moel@345 | 9 |
{ |
moel@345 | 10 |
public static class BitmapHelper |
moel@345 | 11 |
{ |
moel@345 | 12 |
[StructLayout(LayoutKind.Sequential)] |
moel@345 | 13 |
private struct PixelData |
moel@345 | 14 |
{ |
moel@345 | 15 |
public byte B; |
moel@345 | 16 |
public byte G; |
moel@345 | 17 |
public byte R; |
moel@345 | 18 |
public byte A; |
moel@345 | 19 |
} |
moel@345 | 20 |
|
moel@345 | 21 |
public static void SetAlphaChanelValue(Bitmap image, byte value) |
moel@345 | 22 |
{ |
moel@345 | 23 |
if (image == null) |
moel@345 | 24 |
throw new ArgumentNullException("image"); |
moel@345 | 25 |
if (image.PixelFormat != PixelFormat.Format32bppArgb) |
moel@345 | 26 |
throw new ArgumentException("Wrong PixelFormat"); |
moel@345 | 27 |
|
moel@345 | 28 |
BitmapData bitmapData = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), |
moel@345 | 29 |
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); |
moel@345 | 30 |
unsafe |
moel@345 | 31 |
{ |
moel@345 | 32 |
PixelData* pPixel = (PixelData*)bitmapData.Scan0; |
moel@345 | 33 |
for (int i = 0; i < bitmapData.Height; i++) |
moel@345 | 34 |
{ |
moel@345 | 35 |
for (int j = 0; j < bitmapData.Width; j++) |
moel@345 | 36 |
{ |
moel@345 | 37 |
pPixel->A = value; |
moel@345 | 38 |
pPixel++; |
moel@345 | 39 |
} |
moel@345 | 40 |
pPixel += bitmapData.Stride - (bitmapData.Width * 4); |
moel@345 | 41 |
} |
moel@345 | 42 |
} |
moel@345 | 43 |
image.UnlockBits(bitmapData); |
moel@345 | 44 |
} |
moel@345 | 45 |
} |
moel@345 | 46 |
} |