在C#重要做一个圆形或者其他形状的窗口珍视太简单了:
1、用图形软件画出所要的窗口形状,比如你的圆形,把要透明的部分用你程
序中不使用的颜色进行填充。
2、如果你的窗口是固定大小,你的图片尺寸做成和窗口大小一致,把这张图片设成窗口的背景图片。如果你的窗口是可变大小的,在窗口放入一个PicturnBox控件,控件的Dock设成fill,控件的image属性设成你画的图片,空间的sizeMode设成stretchMode。
3、把窗口的transparencyKey属性设成你填充的颜色。执行程序看看是不是达到你要的效果。如果你把窗口的标题栏页去掉了,你必须自己来实现鼠标的拓动等操作。
1、用图形软件画出所要的窗口形状,比如你的圆形,把要透明的部分用你程
序中不使用的颜色进行填充。
2、如果你的窗口是固定大小,你的图片尺寸做成和窗口大小一致,把这张图片设成窗口的背景图片。如果你的窗口是可变大小的,在窗口放入一个PicturnBox控件,控件的Dock设成fill,控件的image属性设成你画的图片,空间的sizeMode设成stretchMode。
3、把窗口的transparencyKey属性设成你填充的颜色。执行程序看看是不是达到你要的效果。如果你把窗口的标题栏页去掉了,你必须自己来实现鼠标的拓动等操作。
解决方案 »
- 求助:C#搭建传真服务器
- C# 静态类成员有关的问题。高分,急!
- 在与SQL server建立连接时出现与网络相关的或特定于实例的错误,未找到或无法访问服务器。
- 怎么更改表中的的以有字段使其递增排列(求SQL语句)
- 在线求助啊:table.clear 更新不了数据库啊
- 高分求工具栏图标(复制,粘贴,剪切等)
- ==>小问题,用C#调用C++DLL时的参数传递问题?(字符串指针)...在线等...
- 急求FFT(频谱)算法,c#版
- 怎么使父窗口的一部分作为Mdi子窗口的区域
- 如何重定向文件!
- 这个网站这么慢,是不是太多的人使用助手的原因?我建议大家不要再使那该死的助手了!
- 终于可以下载Windows.Net RC1了!!!
为什么我试的话不成功?如果不放图片,只将透明色设为窗体背景色,那么是可以达到目的的。但设置了背景图片就不成功了,我用BMP、JPEG和GIF都试了,不行,是不是对图片有什么特殊要求?
this.Opacity=100;
this.BackColor=Color.White;
this.TransparencyKey=Color.White;
this.FormBorderStyle=FormBorderStyle.None;添加PictureBox,再加一张画有圆形的图片,
private int BeginX;
private int BeginY;
private bool mousedown;private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.mousedown=true;
this.beginX=e.X;
this.beginY=e.Y;
} private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.mousedown=false;
} private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (this.mousedown)
{
this.Left+=e.X-this.beginX;
this.Top+=e.Y-this.beginY;
} }
private int beginY;
private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
beginX=e.X;
beginY=e.Y;
}private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button=MouseButtons.Left)
{
Left+=e.X-beginX;
Top+=e.Y-beginY;
}
}注:楼上的代码中BeginX和BeingY应该改为:beginX和beginY,注意大小写。
值得一看。http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchshapedwindowsformscontrolsinvisualstudionet.asp- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
TO:ahchiee(脚印满天) 我自己做了个透明背景的图片(GIF格式),保证透明,在浏览器下试过。可如果显示器是设置32位的,就不行了,你能把你试验成功的图片发到我信箱来吗?谢谢[email protected]
1。当客户机上的显卡设置为24位真彩或以下时,设置Form的TransparencyKey值为透明颜色值就可实现窗体中所有此颜色都将为透明,不管是PictureBox或是其它控件。
2。当客户机上显卡设置为24位以上时,如32位。则以上设置中,PictureBox中的图片不会变成透明,而是会成黑色背景。如果没有设置Form的背景图,则Form的背景色是可以透明的,但一旦设置了Form的bgImage,就背景图不透明。
3。不管客户机如何设置,都让它成为一个不规则窗口的方法。
首先做一个透明的GIF图片文件,不管此GIF文件的透明色是什么颜色,只要透明就行了。
其次将窗体的背景设为此图片,然后将TransparencyKey设置为黑色!一定是黑色,不能是其它颜色!!!再将边框设置为NONE,就可得到一个不规则窗体。
一般来讲,如果将图片设为窗体的背景,我们不好控制它的行为,更常见的是加多个PictureBox控件,然后将PictureBox的背景设为图片。这种情况中要注意一个问题,设为PictureBox的背景图可以,设为PictureBos.image对象就不行。大家可以验证一下我写的对不对。