我正在VS 2008中开发Windows窗体应用程序,我想将一个图像显示在另一个图像的顶部,顶部图像是gif或具有透明部分的东西。
基本上,我有一个大图像,如果要在上面放一个小图像,那么它们对于用户来说就好像是一个图像。
我一直在尝试使用图片框,但是这似乎没有用,有什么建议吗?
几天前,我处于类似情况。您可以创建一个透明控件来承载图像。
using System; using System.Windows.Forms; using System.Drawing; public class TransparentControl : Control { private readonly Timer refresher; private Image _image; public TransparentControl() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); BackColor = Color.Transparent; refresher = new Timer(); refresher.Tick += TimerOnTick; refresher.Interval = 50; refresher.Enabled = true; refresher.Start(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x20; return cp; } } protected override void OnMove(EventArgs e) { RecreateHandle(); } protected override void OnPaint(PaintEventArgs e) { if (_image != null) { e.Graphics.DrawImage(_image, (Width / 2) - (_image.Width / 2), (Height / 2) - (_image.Height / 2)); } } protected override void OnPaintBackground(PaintEventArgs e) { //Do not paint background } //Hack public void Redraw() { RecreateHandle(); } private void TimerOnTick(object source, EventArgs e) { RecreateHandle(); refresher.Stop(); } public Image Image { get { return _image; } set { _image = value; RecreateHandle(); } } }