文字列からビットマップを作成しています。
この時、背景を透明で消していると文字の輪郭が他の色が被ったようになり下記のコードの例だと、
g.Clear(System.Drawing.Color.Transparent/FromArgb(212, 212, 212)./);
文字色は赤ですが輪郭の左右に黒い線があるように見えます。
g.Clear() の色を透明でなく指定すると、奇麗な赤になります。
ここで作った文字画像を他の画像と合わせるので文字以外の背景は透けるようにしたいです。
下記の画像は、左側が背景を透明にした画像でXの輪郭が黒い。右側は、背景を
g.Clear(System.Drawing.Color.FromArgb(212, 212, 212));
にしたので奇麗な赤で表示されています。
背景は透明でゴミ?のようなものが混じらないようにするにはどうしたらいいですか?
教えてください。
Windows10 VS2019 C# WPF
C#
1 private void TestImage() 2 { 3 Font font = new Font("MSP 明朝", 40); 4 5 using (Bitmap bmp = new Bitmap(200, 200)) 6 { 7 //解像度の設定 8 bmp.SetResolution(96, 96); 9 10 //Graphicsオブジェクトを取得 11 using (Graphics g = Graphics.FromImage(bmp)) 12 { 13 //画像を描画する 14 g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height); 15 16 // ブラシを作成する 17 using (System.Drawing.Brush b = new SolidBrush(System.Drawing.Color.Red)) 18 { 19 g.Clear(System.Drawing.Color.Transparent/*FromArgb(212, 212, 212).*/); 20 g.DrawString("XXXXX", font, b, 0, 0); // 10, 22); 21 } 22 } 23 24 var hBmp = bmp.GetHbitmap(); 25 var bm = Imaging.CreateBitmapSourceFromHBitmap( 26 hBmp, 27 IntPtr.Zero, 28 Int32Rect.Empty, 29 BitmapSizeOptions.FromEmptyOptions()); 30 31 var img = new System.Windows.Controls.Image(); 32 img.Width = 200; 33 img.Height = 200; 34 img.Name = "img1"; 35 img.Source = bm; 36 Canvas.SetTop(img, 50); 37 Canvas.SetLeft(img, 50); 38 39 canvas1.Children.Add(img); 40 } 41 }
xaml
1<Canvas Name="canvas1" Background="Transparent" 2 ContextMenu="{StaticResource Menu1}" />
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/18 06:26