C#给PictureBox一个字符串的形状

时间:2014-12-10 10:49:57

标签: c# winforms picturebox drawstring

我想创建一个包含圆形图片和字符串的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";
}
}

当使用这个类并为其分配图片时,这会导致奇怪的行为:

  1. 文字不是红色,而是白色,里面有一些红色颗粒,但主要是白色。我认为这来自不相同的字体。那么如何为绘图和添加使用相同的字体?
  2. 文字在那里是白色的,它位于图像上方:在那里,它是透明的,你可以透过表格看到。
  3. 为什么会这样,我该如何解决?

    左侧的

    enter image description here您看到它的当前状态,在右侧,您会看到彼此相邻的两个不同的图片框。 我希望它看起来像在左侧,但有一个可读的RED文本..

0 个答案:

没有答案