在紧凑框架中的透明度
问题描述:
我需要在.NETCF中创建一个具有透明背景的图像,我使用洋红色作为我希望透明的背景。我试图做到这一点的方式是重写onPaint()。但我不能让背景透明?下面是我有:在紧凑框架中的透明度
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
ImageAttributes imageAttributs = new ImageAttributes();
imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255),
Color.FromArgb(255, 0, 255));
g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height,
GraphicsUnit.Pixel, imageAttributs);
base.OnPaint(e);
}
但是当我尝试,包括我的形象完全不绘制ImageAttributes?
答
啊,透明度在CF.人们可以(而且确实)浪费在这个时间和小时内。首先,您可能会向我们提供一些关于您使用的图像(位图,png等)的更多信息,但我们可能会从您的帖子中推断出一些信息。我们还需要知道这是否在儿童容器中(如框架,面板等内部)。
Colorkey透明度肯定是支持的(从2.0开始 - 也许甚至更早)。这里的问题是,如果你在一个孩子,你会得到父母“流血”。这似乎是你正在尝试的,但对我来说并不是很明显,所以我有几个后续问题需要澄清。
- OnPaint表单覆盖或自定义控件?
- 为什么在工作之后调用基本的OnPaint()(与之前相反或根本不调用)?
- 你重写OnPaintBackground吗?
我现在的猜测是ypou在调用所有东西的时候会有一些错误,但是我们没有足够的代码来发现它。
这里是绘画和透明度几个资源:
- How To: draw images with transparency
- Transparent buttons, panels and controls
- Keeping Bitmap transparency when copying
- Bitmap.Clear bug
有用于alpha通道的东西更多的资源(这在CF中并不简单),但是s因为它看起来像你试图colorkey,这应该是足够的。
答
它看起来像OpenNETCF已经围绕这个托管包装。我相信Chris Tacke可以对此进行更多评论。他似乎在这个网站非常活跃,但看起来像打他到这一个:)
在简单情况下,为什么不使用this.pnlMyPanel.BackColor = this.BackColor? – hellboy 2013-10-14 07:37:13