label的效果如同气泡提示的样子,需要是圆角的四角,并且还要有一个三角箭头,或者也可以是自定义的控件,请教大家
解决方案 »
- 各位有没写的好的SQL池类自我推荐下?
- C# int 怎么赋值为2进制 或者8进制
- DEV控件里的gridView如何实现排序?
- 把二进制数据流还原成图片问题
- 请.NET Socket高手指教
- C#与COM!
- NodeMouseDoubleClick
- 现在遇到两个系统数据集成的问题,一个是sql server2005,一个是oracle,数据源在oracle中,不知道怎样做才可以将数据提取到sql serve
- 将附件内容直接放在邮件正文里显示
- url传base64参数搞不定,又跑上来了
- 请问大家讨论下有什么好的自动部署Windows应用程序的方法?
- 在richTextBox中如何实现按Enter不换行
用这个API来创建不规则区域
[DllImport("gdi32.DLL", EntryPoint="CombineRgn", CharSet=CharSet.Auto)]
private static extern int CombineRgn(IntPtr hDestRgn, IntPtr hSrcRgn1, IntPtr hSrcRgn2, int nCombineMode);
说明:返回值:0表示失败,其余表示成功。
参数:hDestRgn是生成的不规则区域,hSrcRgn1是参与合并的区域1,hSrcRgn2是参与合并的区域2
用这个API函数来创建不规则形状窗口。
代码:
IntPtr m_region;//目标不规则区域
IntPtr HRGN_Main;//参与合并的区域1
IntPtr HRGN_Top;//参与合并的区域2
public const int RGN_AND = 1;//2个区域共同(交集)
public const int RGN_OR = 2;//两个区域合并(并集)
public const int RGN_XOR = 3;
public const int RGN_DIFF = 4;
public const int RGN_COPY = 5;
public const int RGN_MIN = RGN_AND;
public const int RGN_MAX = RGN_COPY;
CombineRgn(HRGN_Main,HRGN_Top,APIParameters.RGN_OR);用这个API来将声明好的Form置入那个不规则区域m_region中。
[DllImport("User32.DLL", EntryPoint="SetWindowRgn", CharSet=CharSet.Auto)]
private static extern int SetWindowRgn(IntPtr hwnd, IntPtr hRgn, bool bRedraw);
代码:
Form m_frm = new Form();
SetWindowRgn(m_frm.Handle, m_region, true);
Form.Show();
调用了Show()后你就能看到这个不规则画面了,不过在这里我没有写出完整的设置区域的代码,这个你可以自己写。提供你个函数:
[DllImport("gdi32.DLL", EntryPoint="CreateEllipticRgn", CharSet=CharSet.Auto)]
private static extern IntPtr CreateEllipticRgn(int X1, int Y1, int X2, int Y2);
和
[DllImport("gdi32.DLL", EntryPoint="CreateRectRgn", CharSet=CharSet.Auto)]
public static extern IntPtr CreateRectRgn(int X1, int Y1, int X2, int Y2);
以上两个函数分别是画椭圆和矩形的函数,置于怎么样组合出你想要的图形,就看你的搭积木的能力了,嘻嘻嘻:)
SetWindowRgn(this.handle,m_region, true);