External/Aga.Controls/BitmapHelper.cs
author StephaneLenclud
Thu, 18 Apr 2013 23:25:10 +0200
branchMiniDisplay
changeset 444 9b09e2ee0968
permissions -rw-r--r--
Front View plug-in does not init if no sensor added.
Fixing some format to make strings shorter.
Now trying to start SoundGraphAccess.exe process from same directory.
Packed mode now can display three sensors along with the current time.
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
}