Я пытался отобразить изображение с прозрачной рамкой в качестве фона для элемента управления.
К сожалению, прозрачная область создает дыру в родительской форме следующим образом:
На изображении выше форма имеет красный фон, который я надеялся увидеть за своим элементом управления в прозрачных областях.
Код, который я использовал, выглядит следующим образом:
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.
Любые идеи будут высоко оценены.