teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

サンプル追記

2021/10/23 12:32

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,65 @@
1
- 一時描画用の画像に文字を実際に描画したいサイズより小さいサイズで描画し、その画像を実際に描画したいサイズに拡大して描画すれば、荒くなる=画質は悪くなると思います。
1
+ 一時描画用の画像に文字を実際に描画したいサイズより小さいサイズで描画し、その画像を実際に描画したいサイズに拡大して描画すれば、荒くなる=画質は悪くなると思います。
2
+
3
+ ```cs
4
+ using System;
5
+ using System.Drawing;
6
+ using System.Drawing.Imaging;
7
+ using System.Drawing.Drawing2D;
8
+ using System.Windows.Forms;
9
+
10
+ public partial class Form1 : Form
11
+ {
12
+ public Form1()
13
+ {
14
+ InitializeComponent();
15
+ }
16
+
17
+ private Bitmap _Bitmap;
18
+ private Bitmap _BitmapTemp;
19
+
20
+ protected override void OnLoad(EventArgs e)
21
+ {
22
+ base.OnLoad(e);
23
+
24
+ //実際に描画したいフォントサイズ
25
+ var fontSize = 30.0f;
26
+
27
+ //拡大率
28
+ var zoomRatio = 4.0f;
29
+
30
+ var str = "あいうえお";
31
+
32
+ _Bitmap = new Bitmap(
33
+ this.ClientRectangle.Width,
34
+ this.ClientRectangle.Height,
35
+ PixelFormat.Format32bppArgb);
36
+ _BitmapTemp = (Bitmap)_Bitmap.Clone();
37
+
38
+ using( var g = Graphics.FromImage(_Bitmap) )
39
+ using (var g2 = Graphics.FromImage(_BitmapTemp))
40
+ using (var font = new Font("MS UI Gothic", fontSize))
41
+ using (var fontZoom = new Font("MS UI Gothic", fontSize / zoomRatio))
42
+ {
43
+ g.FillEllipse(Brushes.SkyBlue, this.ClientRectangle);
44
+
45
+ //普通にテキストを描く(比較用)
46
+ g.DrawString(str, font, Brushes.Black, 0, 0);
47
+
48
+ //縮小テキストを拡大する
49
+ var sizeSrc = g.MeasureString(str, fontZoom);
50
+ var sizeDst = g.MeasureString(str, font);
51
+ g.InterpolationMode = InterpolationMode.NearestNeighbor;
52
+ g2.DrawString(str, fontZoom, Brushes.Black, 0, 0);
53
+ g.DrawImage(
54
+ _BitmapTemp,
55
+ new RectangleF(0, 60, sizeDst.Width, sizeDst.Height),
56
+ new RectangleF(0, 0, sizeSrc.Width, sizeSrc.Height),
57
+ GraphicsUnit.Pixel);
58
+ }
59
+
60
+ this.BackgroundImage = _Bitmap;
61
+ }
62
+ }
63
+ ```
64
+ (実行結果)
65
+ ![実行結果](7c36420174779467da882ab262781d31.png)

1

修正

2021/10/23 12:32

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,1 @@
1
- 一時描画用の画像に文字を実際に描画したいサイズより小さいサイズで描画し、その画像を実際に描画したいサイズに拡大して描画れば荒くなる=画質は悪くなると思います。
1
+ 一時描画用の画像に文字を実際に描画したいサイズより小さいサイズで描画し、その画像を実際に描画したいサイズに拡大して描画れば荒くなる=画質は悪くなると思います。