2010-09-07 91 views
6

我需要在.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?

回答

9

啊,透明度在CF.人们可以(而且确实)浪费在这个时间和小时内。首先,您可能会向我们提供一些关于您使用的图像(位图,png等)的更多信息,但我们可能会从您的帖子中推断出一些信息。我们还需要知道这是否在儿童容器中(如框架,面板等内部)。

Colorkey透明度肯定是支持的(从2.0开始 - 也许甚至更早)。这里的问题是,如果你在一个孩子,你会得到父母“流血”。这似乎是你正在尝试的,但对我来说并不是很明显,所以我有几个后续问题需要澄清。

  • OnPaint表单覆盖或自定义控件?
  • 为什么在工作之后调用基本的OnPaint()(与之前相反或根本不调用)?
  • 你重写OnPaintBackground吗?

我现在的猜测是ypou在调用所有东西的时候会有一些错误,但是我们没有足够的代码来发现它。

这里是绘画和透明度几个资源:

有用于alpha通道的东西更多的资源(这在CF中并不简单),但是s因为它看起来像你试图colorkey,这应该是足够的。

+0

在简单情况下,为什么不使用this.pnlMyPanel.BackColor = this.BackColor? – hellboy 2013-10-14 07:37:13

3

紧凑型框架不支持透明度 - 您可以通过COM interop来实现对它的支持。克里斯洛顿有一个very good blog post在alpablending紧凑的框架。

1

它看起来像OpenNETCF已经围绕这个托管包装。我相信Chris Tacke可以对此进行更多评论。他似乎在这个网站非常活跃,但看起来像打他到这一个:)