Я пытаюсь решить проблему с помощью пользовательского элемента управления, перенесенного из приложения VCL C ++.Идея состоит в том, что отдельные части элемента управления сначала рисуются в новом объекте Graphics, а затем объединяются с объектом Graphics из метода рисования элемента управления.
Я создал упрощенный пример:
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
public class Form1 : Form
{
private PictureBox pictureBox;
public Form1()
{
pictureBox = new PictureBox();
pictureBox.Dock = DockStyle.Fill;
pictureBox.Paint += new PaintEventHandler(pictureBox_Paint);
ClientSize = new Size(100, 50);
Controls.Add(pictureBox);
}
private void pictureBox_Paint(object sender, PaintEventArgs e)
{
SolidBrush blackBrush = new SolidBrush(Color.Black);
Bitmap bitmap = new Bitmap(pictureBox.Width, pictureBox.Height);
Graphics graphics = Graphics.FromImage(bitmap);
Font font = new Font(pictureBox.Font, FontStyle.Regular);
graphics.DrawString("simple test", font, Brushes.Black, 0, 0);
e.Graphics.DrawImage(bitmap, 0, 0);
}
}
}
Выполнение приведенного выше кода приводит к тому, что текст рисуется слишком толстым:
Когда я изменяю код, чтобы нарисовать текст непосредственно в объект Graphics объекта PictureBox, который я получаюправильный результат:
Эта проблема возникает только при визуализации текста.Линии и другие формы отображаются правильно.Есть идеи, как это решить?
Заранее спасибо.