Управление рисунком с прозрачным фоном

Я пытался отобразить изображение с прозрачной рамкой в ​​качестве фона для элемента управления.

К сожалению, прозрачная область создает дыру в родительской форме следующим образом:

На изображении выше форма имеет красный фон, который я надеялся увидеть за своим элементом управления в прозрачных областях.

Код, который я использовал, выглядит следующим образом:

    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
        if (this.Image != null)
        {
            Graphics g = Graphics.FromImage(this.Image);

            ImageAttributes attr = new ImageAttributes();

            //set the transparency based on the top left pixel
            attr.SetColorKey((this.Image as Bitmap).GetPixel(0, 0), (this.Image as Bitmap).GetPixel(0, 0));

            //draw the image using the image attributes.
            Rectangle dstRect = new Rectangle(0, 0, this.Image.Width, this.Image.Height);

            e.Graphics.DrawImage(this.Image, dstRect, 0, 0, this.Image.Width, this.Image.Height,
                GraphicsUnit.Pixel, attr);
        }
        else
        {
            base.OnPaint(e);
        }
    }

    protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs e)
    {
        //base.OnPaintBackground(e);
    }

Этот класс унаследован от PictureBox, потому что мне нужен элемент управления, реализующий события OnMouseMove и OnMouseUp.

Я исследовал большую часть дня, но безуспешно тестировал разные идеи, но, к сожалению, большинство из них работает только с полной структурой, а не с.Net CF.

Любые идеи будут высоко оценены.

7
задан ctacke 30 June 2012 в 18:52
поделиться