C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■99494 / 2階層)  GDI+で画像サイズを大きくした時に出る画像端の帯の消し方
□投稿者/ yao (2回)-(2022/04/17(Sun) 18:15:48)
VB.NETを使って、
30x30ピクセル程度の小さなピクセル数の画像を
880x880ピクセル程度まで大きくしたいと考えています。

以下のようなコードで30x30ピクセルのimgを
880x880程度のサイズのPictureBoxと同じサイズまで拡大してみました。

	Dim img As Bitmap

	Dim PBox As PictureBox = PictureBox1


        Dim canvas As New Bitmap(PBox.ClientSize.Width, PBox.ClientSize.Height, PixelFormat.Format32bppPArgb)

        Using g As Graphics = Graphics.FromImage(canvas)

            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor
            ' g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear

            g.PixelOffsetMode = PixelOffsetMode.HighQuality
            g.DrawImage(img, 0, 0, PBox.ClientSize.Width, PBox.ClientSize.Height)


            img.Dispose()

        End Using

	PBox.Image = canvas


すると、
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor
の場合には、綺麗に拡大することができました。
https://dotup.org/uploda/dotup.org2778352.png


しかし
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear
の場合には、画像の4隅がぼやけてしまいます。
https://dotup.org/uploda/dotup.org2778353.png
PictureBox全体に渡って綺麗に画像を拡大したいのですが
どのようにすれば良いですか?

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: GDI+で画像サイズを大きくした時に出る画像端の帯の消.. /???? →Re[3]: GDI+で画像サイズを大きくした時に出る画像端の帯の消.. /魔界の仮面弁士
 
上記関連ツリー

GDI+で画像サイズを大きくした時に出る画像端の帯の消し方 / yao (22/04/16(Sat) 19:11) #99490
Re[1]: GDI+で画像サイズを大きくした時に出る画像端の帯の消.. / ???? (22/04/17(Sun) 05:52) #99492 解決済み
  └ GDI+で画像サイズを大きくした時に出る画像端の帯の消し方 / yao (22/04/17(Sun) 18:15) #99494 ←Now
    └ Re[3]: GDI+で画像サイズを大きくした時に出る画像端の帯の消.. / 魔界の仮面弁士 (22/04/18(Mon) 12:04) #99495

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信