|
It's really a painful question. There are many articles about c++ wm dealing with fullscreen!
However, i can't find the c# version. My head explodes!!!
Anyone can help me?
Highly appreciated!
|
|
|
|
|
public MainForm()
{
InitializeComponent();
backBuffer = new Bitmap(this.ClientSize.Width, this.ClientSize.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
radioButton4.Tag = Color.FromArgb(255, 255, 192);
string path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
constantAlphaImage = new Bitmap(path + @"\blendme.bmp");
IImagingFactory factory = (IImagingFactory)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("327ABDA8-072B-11D3-9D7B-0000F81EF32E")));
factory.CreateImageFromFile(path + @"\ihavealpha.png", out imagingImage);
MemoryStream strm = (MemoryStream)Assembly.GetExecutingAssembly().GetManifestResourceStream("AlphaExample.embedded.png");
byte[] pbBuf = strm.GetBuffer();
uint cbBuf = (uint)strm.Length;
factory.CreateImageFromBuffer(pbBuf, cbBuf, BufferDisposalFlag.BufferDisposalFlagNone, out imagingResource);
}
private void Form1_Paint(object sender, PaintEventArgs e)<br />
{<br />
<br />
if (backBuffer != null)<br />
{<br />
using (Graphics gxBuffer = Graphics.FromImage(backBuffer))<br />
{<br />
gxBuffer.Clear(this.BackColor);<br />
<br />
IntPtr hdcDest = gxBuffer.GetHdc();<br />
Rectangle dstRect = new Rectangle(100, 100, 148, 148);<br />
imagingResource.Draw(hdcDest, ref dstRect, IntPtr.Zero);<br />
gxBuffer.ReleaseHdc(hdcDest);<br />
<br />
using (Graphics gxSrc = Graphics.FromImage(constantAlphaImage))<br />
{<br />
IntPtr hdcDst = gxBuffer.GetHdc();<br />
IntPtr hdcSrc = gxSrc.GetHdc();<br />
BlendFunction blendFunction = new BlendFunction();<br />
blendFunction.BlendOp = (byte)BlendOperation.AC_SRC_OVER;
blendFunction.BlendFlags = (byte)BlendFlags.Zero;
blendFunction.SourceConstantAlpha = (byte)vScrollBar1.Value;
blendFunction.AlphaFormat = (byte)0;
PlatformAPIs.AlphaBlend(hdcDst, 36, 36, 128, 128, hdcSrc, 0, 0, 128, 128, blendFunction);<br />
gxBuffer.ReleaseHdc(hdcDst);
gxSrc.ReleaseHdc(hdcSrc);
}<br />
<br />
hdcDest = gxBuffer.GetHdc();
dstRect = new Rectangle(4, 4, 132, 132);<br />
imagingImage.Draw(hdcDest, ref dstRect, IntPtr.Zero);<br />
gxBuffer.ReleaseHdc(hdcDest);<br />
}<br />
<br />
e.Graphics.DrawImage(backBuffer, 0, 0);<br />
}<br />
else<br />
e.Graphics.Clear(this.BackColor);<br />
}<br />
|
|
|
|