紧凑框架中的透明度

时间:2010-09-07 14:01:33

标签: c# .net windows-mobile compact-framework

我需要在.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时,根本没有绘制我的图像?

3 个答案:

答案 0 :(得分:9)

啊,CF的透明度。人们可以(并且确实)浪费了这些时间和日子。首先,您可以向我们提供有关您正在使用的图像(位图,png等)的更多信息,但我们可以从您的帖子中推断出一些。我们还需要知道它是否在子容器中(如框架,面板等)。

当然支持Colorkey透明度(自2.0以来 - 甚至可能更早)。这里的问题是,如果你是一个孩子,你会让父母“流血”。这似乎是你正在尝试的,但对我来说并不是很明显,所以我有一些后续问题需要澄清。

  • OnPaint是窗体覆盖还是自定义控件?
  • 为什么你在工作之后调用基础OnPaint()(而不是之前或根本没有)?
  • 您是否覆盖了OnPaintBackground?

我现在的猜测是,ypou在你调用所有内容的方式上有一些错误,但是我们没有足够的代码来发现它。

以下是关于绘画和透明度的更多资源:

有更多的资源用于alpha-channel东西(在CF中远非简单),但由于看起来你正在尝试使用colorkey,这些应该足够了。

答案 1 :(得分:3)

紧凑的框架不支持透明度 - 你可以通过COM互操作来实现它的支持。克里斯·洛顿(Chris Lorton)在紧凑框架上有一个very good blog post

答案 2 :(得分:1)

看起来OpenNETCF已经在这方面管理了包装器。我相信Chris Tacke可以对此发表更多评论。他似乎在这个网站上相当活跃,但看起来像是打败了他这个:)