Introduction
This is a gradient button for use in Windows Mobile. I had to create a gradient button for use in Windows Mobile with Managed code.
Using the code
I have created the gradient button control by inheriting from Control
. Another class I use is the gradient color maker from unmanaged code. For this, I use the "TRIVERTEX
" struct. You can get more info about it from: http://msdn.microsoft.com/en-us/library/ms532283(VS.85).aspx.
public struct TRIVERTEX
{
public int x;
public int y;
public ushort Red;
public ushort Green;
public ushort Blue;
public ushort Alpha;
public TRIVERTEX(int x, int y, Color color)
: this(x, y, color.R, color.G, color.B, color.A)
{
}
public TRIVERTEX(
int x, int y,
ushort red, ushort green, ushort blue,
ushort alpha)
{
this.x = x;
this.y = y;
this.Red = (ushort)(red << 8);
this.Green = (ushort)(green << 8);
this.Blue = (ushort)(blue << 8);
this.Alpha = (ushort)(alpha << 8);
}
}
public struct GRADIENT_RECT
{
public uint UpperLeft;
public uint LowerRight;
public GRADIENT_RECT(uint ul, uint lr)
{
this.UpperLeft = ul;
this.LowerRight = lr;
}
}
I have also used an unmanaged function for making gradient colors for drawing the button:
[DllImport("coredll.dll", SetLastError = true, EntryPoint = "GradientFill")]
public extern static bool GradientFill(
IntPtr hdc,
TRIVERTEX[] pVertex,
uint dwNumVertex,
GRADIENT_RECT[] pMesh,
uint dwNumMesh,
uint dwMode);
The above method is the key for gradients in Windows. Visti this link for more info: http://msdn.microsoft.com/en-us/library/ms229655(VS.80).aspx.
History
- First version: 05/07/2008.