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

回答編集履歴

1

見直しキャンペーン中

2023/07/28 16:35

投稿

TN8001
TN8001

スコア10114

answer CHANGED
@@ -1,116 +1,116 @@
1
- 解決されているようですが、`System.Drawing`を参照したくないのでWPFのみバージョンです。
2
-
3
- > "MSP 明朝"
4
-
5
- "MS P明朝"じゃないですかね?
6
-
7
- ```xaml
8
- <Window
9
- x:Class="Questions354935.MainWindow"
10
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
11
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
12
- Width="800"
13
- Height="450">
14
- <Grid>
15
- <Canvas Name="canvas1" Background="LightGray" />
16
- <TextBlock
17
- FontFamily="MS P明朝"
18
- Foreground="Red"
19
- Text="XXXXX - TextBlock" FontSize="40pt" />
20
- </Grid>
21
- </Window>
22
- ```
23
-
24
- ```C#
25
- using System;
26
- using System.Globalization;
27
- using System.Windows;
28
- using System.Windows.Controls;
29
- using System.Windows.Interop;
30
- using System.Windows.Media;
31
- using System.Windows.Media.Imaging;
32
-
33
- namespace Questions354935
34
- {
35
- public partial class MainWindow : Window
36
- {
37
- public MainWindow()
38
- {
39
- InitializeComponent();
40
- TestImage();
41
- TestImage2();
42
- }
43
-
44
- private void TestImage()
45
- {
46
- //var font = new System.Drawing.Font("MSP 明朝", 40);
47
- var font = new System.Drawing.Font("MS P明朝", 40);
48
-
49
- using (var bmp = new System.Drawing.Bitmap(800, 200))
50
- {
51
- bmp.SetResolution(96, 96);
52
- using (var g = System.Drawing.Graphics.FromImage(bmp))
53
- {
54
- g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
55
- using (var b = new System.Drawing.SolidBrush(System.Drawing.Color.Red))
56
- {
57
- g.Clear(System.Drawing.Color.Transparent/*FromArgb(212, 212, 212).*/);
58
- g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
59
- g.DrawString("XXXXX - System.Drawing", font, b, 0, 0); // 10, 22);
60
- }
61
- }
62
-
63
- var hBmp = bmp.GetHbitmap();
64
- var bm = Imaging.CreateBitmapSourceFromHBitmap(
65
- hBmp,
66
- IntPtr.Zero,
67
- Int32Rect.Empty,
68
- BitmapSizeOptions.FromEmptyOptions());
69
-
70
- var img = new Image
71
- {
72
- Width = 800,
73
- Height = 200,
74
- Source = bm,
75
- };
76
- Canvas.SetTop(img, 100);
77
- //Canvas.SetLeft(img, 50);
78
-
79
- canvas1.Children.Add(img);
80
- }
81
- }
82
-
83
- private void TestImage2()
84
- {
85
- var text = new FormattedText("XXXXX - DrawingVisual",
86
- CultureInfo.CurrentCulture,
87
- FlowDirection.LeftToRight,
88
- new Typeface("MS P明朝"),
89
- 40 * (96.0 / 72.0),
90
- Brushes.Red, 96);
91
-
92
- var drawingVisual = new DrawingVisual();
93
- var drawingContext = drawingVisual.RenderOpen();
94
- drawingContext.DrawText(text, new Point());
95
- drawingContext.Close();
96
-
97
- var bmp = new RenderTargetBitmap(800, 200, 96, 96, PixelFormats.Pbgra32);
98
- bmp.Render(drawingVisual);
99
-
100
- var img = new Image
101
- {
102
- Width = 800,
103
- Height = 200,
104
- Source = bmp,
105
- };
106
- Canvas.SetTop(img, 200);
107
- //Canvas.SetLeft(img, 50);
108
-
109
- canvas1.Children.Add(img);
110
- }
111
- }
112
- }
113
- ```
114
- ![アプリ画像](47303e42ed17c089ee6c352816a36832.png)
115
-
1
+ 解決されているようですが、`System.Drawing`を参照したくないのでWPFのみバージョンです。
2
+
3
+ > "MSP 明朝"
4
+
5
+ "MS P明朝"じゃないですかね?
6
+
7
+ ```xml
8
+ <Window
9
+ x:Class="Questions354935.MainWindow"
10
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
11
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
12
+ Width="800"
13
+ Height="450">
14
+ <Grid>
15
+ <Canvas Name="canvas1" Background="LightGray" />
16
+ <TextBlock
17
+ FontFamily="MS P明朝"
18
+ Foreground="Red"
19
+ Text="XXXXX - TextBlock" FontSize="40pt" />
20
+ </Grid>
21
+ </Window>
22
+ ```
23
+
24
+ ```cs
25
+ using System;
26
+ using System.Globalization;
27
+ using System.Windows;
28
+ using System.Windows.Controls;
29
+ using System.Windows.Interop;
30
+ using System.Windows.Media;
31
+ using System.Windows.Media.Imaging;
32
+
33
+ namespace Questions354935
34
+ {
35
+ public partial class MainWindow : Window
36
+ {
37
+ public MainWindow()
38
+ {
39
+ InitializeComponent();
40
+ TestImage();
41
+ TestImage2();
42
+ }
43
+
44
+ private void TestImage()
45
+ {
46
+ //var font = new System.Drawing.Font("MSP 明朝", 40);
47
+ var font = new System.Drawing.Font("MS P明朝", 40);
48
+
49
+ using (var bmp = new System.Drawing.Bitmap(800, 200))
50
+ {
51
+ bmp.SetResolution(96, 96);
52
+ using (var g = System.Drawing.Graphics.FromImage(bmp))
53
+ {
54
+ g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
55
+ using (var b = new System.Drawing.SolidBrush(System.Drawing.Color.Red))
56
+ {
57
+ g.Clear(System.Drawing.Color.Transparent/*FromArgb(212, 212, 212).*/);
58
+ g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
59
+ g.DrawString("XXXXX - System.Drawing", font, b, 0, 0); // 10, 22);
60
+ }
61
+ }
62
+
63
+ var hBmp = bmp.GetHbitmap();
64
+ var bm = Imaging.CreateBitmapSourceFromHBitmap(
65
+ hBmp,
66
+ IntPtr.Zero,
67
+ Int32Rect.Empty,
68
+ BitmapSizeOptions.FromEmptyOptions());
69
+
70
+ var img = new Image
71
+ {
72
+ Width = 800,
73
+ Height = 200,
74
+ Source = bm,
75
+ };
76
+ Canvas.SetTop(img, 100);
77
+ //Canvas.SetLeft(img, 50);
78
+
79
+ canvas1.Children.Add(img);
80
+ }
81
+ }
82
+
83
+ private void TestImage2()
84
+ {
85
+ var text = new FormattedText("XXXXX - DrawingVisual",
86
+ CultureInfo.CurrentCulture,
87
+ FlowDirection.LeftToRight,
88
+ new Typeface("MS P明朝"),
89
+ 40 * (96.0 / 72.0),
90
+ Brushes.Red, 96);
91
+
92
+ var drawingVisual = new DrawingVisual();
93
+ var drawingContext = drawingVisual.RenderOpen();
94
+ drawingContext.DrawText(text, new Point());
95
+ drawingContext.Close();
96
+
97
+ var bmp = new RenderTargetBitmap(800, 200, 96, 96, PixelFormats.Pbgra32);
98
+ bmp.Render(drawingVisual);
99
+
100
+ var img = new Image
101
+ {
102
+ Width = 800,
103
+ Height = 200,
104
+ Source = bmp,
105
+ };
106
+ Canvas.SetTop(img, 200);
107
+ //Canvas.SetLeft(img, 50);
108
+
109
+ canvas1.Children.Add(img);
110
+ }
111
+ }
112
+ }
113
+ ```
114
+ ![アプリ画像](47303e42ed17c089ee6c352816a36832.png)
115
+
116
116
  微妙に違うのですが、なんでかはわかりません^^;