VCL C++アプリケーションから移植されたカスタムコントロールの問題を解決しようとしています。コントロールの個々の部分が最初に新しいGraphicsオブジェクトに描画され、次にコントロールのpaintメソッドの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);
}
}
}
テキストで上記のコードの結果を実行すると、厚すぎる描かれている:
私はテキストを描画するコードを変更
直接PictureBoxのグラフィックスオブジェクトに私は正しい結果を得る:
この問題は、テキストレンダリングでのみ発生します。線や他の図形が正しくレンダリングされます。任意のアイデアをどのようにこれを解決するには?
ありがとうございます。
ありがとうございます! – user828227