DOBON.NETプログラミング道掲示板

No34181 の記事


■34181 / )  DrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい
□投稿者/ Iraquser 一般人(7回)-(2019/03/04(Mon) 17:25:37)
  • アイコン環境/言語:[Win10 c#] 
    分類:[.NET] 

    いつもお世話になっております。
    ピクチャーボックスに文字列を描画する処理で発生する現象の理由が知りたくて
    投稿させて頂きます。
    
    ピクチャーボックスにDrawStringメソッドで文字列を描画する際、描画先となる
    Imageオブジェクトを事前にFillRectangleメソッドにて塗りつぶした後に描画す
    るのと、塗りつぶしをせずに描画するのとで、描画される文字の太さが変わるの
    は何故なんでしょうか。
    
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    namespace Test01 {
        public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
            }
            private PictureBox p = new PictureBox();
            private void Form1_Load(object sender, EventArgs e) {
                this.Size = new Size(300, 200);
                p.Size = this.ClientSize;
                p.Location = new Point(0, 0);
                p.BackColor = Color.White;
                p.BorderStyle = BorderStyle.FixedSingle;
                p.MouseClick += new MouseEventHandler(p_MouseClick);
                this.Controls.Add(p);
            }
            private void p_MouseClick(object sender, MouseEventArgs e) {
                Bitmap c = new Bitmap(p.Width, p.Height);
                Graphics g = Graphics.FromImage(c);
                Font f = new Font("MS UI Gothic", 20);
                if (e.Button == MouseButtons.Left) {
                    g.FillRectangle(Brushes.White, g.VisibleClipBounds);
                    g.DrawString("左ボタンを押しました。", 
                                 f, Brushes.Black, new Point(20, 20));
                } else if (e.Button == MouseButtons.Right) {
                    g.DrawString("右ボタンを押しました。", 
                                 f, Brushes.Black, new Point(20, 20));
                }
                g.Dispose();
                p.Image = c;
            }
        }
    }
    

592×201 => 250×84
イメージ
1551687937.png
/5KB
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -