picturebox背景色透明

dickens123456 2010-03-03 11:26:25
我想用picturebox做不规则形状的按钮,但是图片加上去周围老是有白边,我用gif png都试过了,把图片的边弄成透明的,但是加到控件里依然有白边。。。我把backcolor搞成Transparent但是没有效果。。。请问如何把picturebox背景弄透明?或者还有什么方法能做出不规则形状的按钮
...全文
505 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2010-03-04
  • 打赏
  • 举报
回复
看我的博客,ImageButton那个文章有源码。


或者还有什么方法能做出不规则形状的按钮
对于这个问题,你的用Region来控制控件。透明色只是个偷懒的办法,不是正道,但是比较省事。要不然每个控件都要去算Region.
tianliang1 2010-03-04
  • 打赏
  • 举报
回复
首先把PictureBox设置背景为Transparent,在添加一张Png的图片。。。
若你是要得到什么不规则的按钮,恐怕要自定义控件。。。
book_xuanxiang008 2010-03-04
  • 打赏
  • 举报
回复
你把图片的画布搞成透明的没
dickens123456 2010-03-04
  • 打赏
  • 举报
回复
拜托各位达人帮个忙呀~
dickens123456 2010-03-04
  • 打赏
  • 举报
回复
能说的具体点么。。。。。。
itliyi 2010-03-04
  • 打赏
  • 举报
回复
这东西麻烦 自定义
aikeli1234567 2010-03-04
  • 打赏
  • 举报
回复
自定义控件

public class ImageView: Panel
{
// 缓冲数据图像
private Bitmap btp = null;
// 缓冲绘画对象
private Graphics grp = null;

// 自定义背景图像
private Bitmap _image = null;
public Bitmap Image
{
get { return _image; }
set { _image = value; }
}

// 背景图片显示矩形
private Rectangle _bgrct;
public Rectangle BgRect
{
get { return _bgrct; }
set { _bgrct = value; }
}

public ImageView()
{
btp = new Bitmap(this.Width, this.Height); // 初始化缓冲数据对象
grp = Graphics.FromImage(btp); // 初始化缓冲绘画对象
}

protected override void OnPaint(PaintEventArgs e)
{
grp.Clear(this.BackColor); // 清楚背景颜色
DrawImage(); // 绘画所有图层
e.Graphics.DrawImage(btp, new Point(0, 0)); // 重绘数据缓冲图像
}

/// <summary>
/// 绘画所有图层对象
/// </summary>
private void DrawImage()
{
if (this._image != null)
{
grp.DrawImage(this._image, this._bgrct);
//this._image.Save(@"D:\rct.png");
Console.WriteLine(this._bgrct.X + "," + this._bgrct.Y + "," + this._bgrct.Width + "," + this._bgrct.Height);
}
}

protected override void OnSizeChanged(EventArgs e)
{
// 面板宽和高不全为零,重新创建缓冲对象
if (this.Width != 0 || this.Height != 0)
{
btp = new Bitmap(this.Width, this.Height);
grp = Graphics.FromImage(btp);
base.OnSizeChanged(e);
}
}

protected override void OnPaintBackground(PaintEventArgs e)
{
// 重要是重写次函数,为空实现覆盖环境自带的背景绘画
}
}

threenewbee 2010-03-03
  • 打赏
  • 举报
回复
除非用gdiplus。
或者clipwindow() api

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧