Я пишу код C # в VS2010 для достижения следующего.
Я пытаюсь нарисовать текст на прозрачном растровом изображении и наталкиваюсь на уродливый текст.Ниже приведено изображение из трех текстов (т.е. A, B и C)
Примечание: A и C имеют прозрачный фон, B имеет белый цвет в качестве фона. Проблема:
A: Iиметь растровое изображение с форматом пикселей ARGB.И я хочу нарисовать текст в нем.Нарисованный текст имеет острые края и не учитывает прозрачность.
B: Я пишу точно такой же код, но единственное отличие от A состоит в том, что пиксели в растровом изображении больше не являются прозрачными.(Я буду заполнять прямоугольник).Но если вы заметите пиксели текста, вы увидите плавную смесь черного (цвет текста) и белого (цвет фона).
C: Я ожидаю, что текст будет выглядеть, когда ярисование текста на растровом изображении с прозрачными пикселями.
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl1_Paint(object sender, PaintEventArgs e)
{
//e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, Color.Red)), e.ClipRectangle);
e.Graphics.DrawString("0123456789", new Font("Verdana", 20), Brushes.Red, new PointF(5, 10));
e.Graphics.DrawEllipse(Pens.Black, e.ClipRectangle);
}
// This is a public method, using which I want to save my usercontrol to an image to save to file later.
public Image ToImage(Size size, PixelFormat p)
{
Bitmap b = new Bitmap(Width, Height, p);
using (Graphics g = Graphics.FromImage(b))
{
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
PaintEventArgs e = new PaintEventArgs(g, new Rectangle(0, 0, size.Width, size.Height));
base.OnPaint(e);
this.OnPaint(e);
}
return b;
}
Как сделать A похожим на C с прозрачным фоном.Я почти уверен, что это можно сделать, потому что такие программы, как photoshop, paint.net, справляются с этим очень хорошо.
Большое спасибо!
Datte