External/Aga.Controls/BitmapHelper.cs
author StephaneLenclud
Sun, 03 Feb 2013 18:01:50 +0100
branchMiniDisplay
changeset 433 090259cfd699
permissions -rw-r--r--
Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
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
}