我想创建一个包含圆形图片和字符串的PictureBox。 Box的形状不应该是矩形,而是适应String和圆形图片。我需要这个以实现"完美"透明度,因为显然是WindowsForms,当设置为透明时,只需通过父框的图片。
以下是我制作的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
namespace myProject
{
class ShapedPictureBoxes : PictureBox
{
public ShapedPictureBoxes()
{
this.Paint += this.shapedPaint;
}
void shapedPaint(object sender, PaintEventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
Rectangle rectangle = this.ClientRectangle;
graphicsPath.AddEllipse(rectangle);
graphicsPath.AddString(text, new FontFamily("Arial"), (int)System.Drawing.FontStyle.Bold, 14f, new Point(0,0), new StringFormat());
e.Graphics.DrawString(text, new Font("Arial", 14f), Brushes.Red, new Point(0, 0));
this.Region = new Region(graphicsPath);
}
public string text = "HERE COMES THE SUN";
}
}
当使用这个类并为其分配图片时,这会导致奇怪的行为:
为什么会这样,我该如何解决?
左侧的您看到它的当前状态,在右侧,您会看到彼此相邻的两个不同的图片框。 我希望它看起来像在左侧,但有一个可读的RED文本..