【发布时间】:2017-07-04 14:06:25
【问题描述】:
我有一个带有图片框的自定义用户控件。然后,在Paint事件中的控件上画一个圆圈。
var size = TextRenderer.MeasureText(this.UnreadCount.ToString(), lblDisplayname.Font);
var rec = new Rectangle(0, 0, size.Width, size.Width);
var smallFont = new Font(lblDisplayname.Font.Name, lblDisplayname.Font.Size - 1);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.FormatFlags = StringFormatFlags.DirectionRightToLeft;
format.LineAlignment = StringAlignment.Center;
using (LinearGradientBrush b = new LinearGradientBrush(
rec,
Color.FromArgb(242, 37, 37),
Color.FromArgb(178, 30, 30),
45F))
{
e.Graphics.FillEllipse(b, rec);
e.Graphics.DrawString(this.UnreadCount.ToString(), smallFont, Brushes.White, rec, format);
}
然后,在稍后的实现中,我设置了控件的图片框的图像。
MyControl ctrl = new MyControl();
ctrl.picImage.Image = Image.FromFile(imagePath);
ctrl.Refresh();
问题是:图片框的图像与绘制的圆圈重叠。 current issue 要求是:需要圆圈显示完全重叠的图像。什么可能导致我的问题?
【问题讨论】:
-
您是否尝试过在您的父自定义控件中覆盖
CreateParams,如this question 中的第二个片段所述? -
刚试过。不幸的是,它不起作用。
-
你能分享一下图片应该是什么样子吗?我的意思是想要的结果。
-
在一个空白的用户控件中,添加一个面板(Panel1)并将其停靠到父控件,在前一个面板上添加另一个面板(Panel2),在panel2绘制事件中,输入您的代码。更改根据需要在您的代码中添加面板 1 的背景图像。 - 没有图片框的另一种方法