关于您上次回答的“[C#] GDI+能实现PNG格式背景图片的透明”
上次您给的答案可以详细点解释下吗??我对里面的一些参数不是很理解1.IntPtr的意思2.Win32API.SelectObject3.Win32API.BLENDFUN...
上次您给的答案可以详细点解释下吗??
我对里面的一些参数不是很理解
1.IntPtr 的意思
2.Win32API.SelectObject
3.Win32API.BLENDFUNCTION
4.Win32API.UpdateLayeredWindow
5.createParams.ExStyle |= Win32API.0x80000;这句话是什么意思?
如果可以的话,请把代码和注释详细点给我!
急用,加急! 展开
我对里面的一些参数不是很理解
1.IntPtr 的意思
2.Win32API.SelectObject
3.Win32API.BLENDFUNCTION
4.Win32API.UpdateLayeredWindow
5.createParams.ExStyle |= Win32API.0x80000;这句话是什么意思?
如果可以的话,请把代码和注释详细点给我!
急用,加急! 展开
1个回答
2013-09-20
展开全部
1.IntPtr代表指针变量,是c#的基本类型
2.BLENDFUNCTION是我定义的结构体,用于对应UpdateLayeredWindow这个API函数的BLENDFUNCTION类型参数:定义如下,UpdateLayeredWindow函数下面有说。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct BLENDFUNCTION
{
public byte BlendOp;
public byte BlendFlags;
public byte SourceConstantAlpha;
public byte AlphaFormat;
}
3.SelectObject是API函数,我这里把它作为常函数定义在Win32API这个类里面,作用是将对象选进DC。我将它的c#引用方法也给你吧,具体怎么在c#里面引用API函数,可以参考MSDN
[DllImport("gdi32.dll", ExactSpelling = true)]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
4.UpdateLayeredWindow也是API函数,定义在Win32API这个类里面,作用是把设置窗口的透明度或透明方式(Alapha还是透明指定颜色),下面是这个函数在c#里面引用的方法。
[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
public static extern Bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize, IntPtr hdcSrc, ref Point pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);
5.createParams.ExStyle |= Win32API.0x80000这句写错了,
应该是:createParams.ExStyle |= 0x80000;是为了把窗口设为Layer窗口,一定要设置这个,不然窗口无法透明。其实这是API里面的CreateWindowEx函数创建窗口时用的扩展属性,可以参考MSDN。
2.BLENDFUNCTION是我定义的结构体,用于对应UpdateLayeredWindow这个API函数的BLENDFUNCTION类型参数:定义如下,UpdateLayeredWindow函数下面有说。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct BLENDFUNCTION
{
public byte BlendOp;
public byte BlendFlags;
public byte SourceConstantAlpha;
public byte AlphaFormat;
}
3.SelectObject是API函数,我这里把它作为常函数定义在Win32API这个类里面,作用是将对象选进DC。我将它的c#引用方法也给你吧,具体怎么在c#里面引用API函数,可以参考MSDN
[DllImport("gdi32.dll", ExactSpelling = true)]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
4.UpdateLayeredWindow也是API函数,定义在Win32API这个类里面,作用是把设置窗口的透明度或透明方式(Alapha还是透明指定颜色),下面是这个函数在c#里面引用的方法。
[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
public static extern Bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize, IntPtr hdcSrc, ref Point pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);
5.createParams.ExStyle |= Win32API.0x80000这句写错了,
应该是:createParams.ExStyle |= 0x80000;是为了把窗口设为Layer窗口,一定要设置这个,不然窗口无法透明。其实这是API里面的CreateWindowEx函数创建窗口时用的扩展属性,可以参考MSDN。
博思aippt
2024-07-20 广告
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT...
点击进入详情页
本回答由博思aippt提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询