次のイメージを考えてみると、これはかなり基本的なアイコンで、サイズは32x32です。アイコンの周りには透明な長方形がありますが、テスト中に四隅を単色で塗りつぶしました。 Graphics.DrawImageが画像の一部を切り取るのはなぜですか?
は今、単純に画像を描画するこのコードを、検討し、より大きなスケールで:私は完全なイメージを描いていると私は収穫しようとしていないよprotected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.DrawImage(Properties.Resources.icon_32a, new RectangleF(0, 0, 512, 512), new RectangleF(0, 0, 32, 32), GraphicsUnit.Pixel);
}
注意それは決してそれを拡大するものではありません。
お知らせ問題:
最後に、これはテストが私に与え出力はありますか?一番上の行と左の列のピクセルの半分が消えています。この上にグリッドを重ね合わせてみると、グリッドが正しく整列されているように見えますが、画像は正しく表示されません。サイズを64倍に増やしても、64はこの最初の行/列のトリミングを導入します。
注、私はまた、0,0の前に描いていただけの場合にはターゲット矩形を相殺しようとしたが、これはそうではありませんでした。
私はまた異なる補間モードを使用してみましたが、私の知る限りぼかしを誘発頭痛によって言うことができるよう、各画素は、まだトリミングされたので、私はそれを補間モードによるだとは思いません。
私はまた、別のグラフィックスモードを使用しようとしましたが、別に助けていないようでしたという事実から、私はとにかくピクセルに固執する必要があります。
私は好奇心から96DPIの画像の新しいコピーを再試行し、私はそれが元の画像の解像度はないと思うので、同じ効果を得ました。
Rectangle
の代わりにRectangleF
を使用してストローで挟み込むことも効果がありませんでした。
誰もがこの明らかな作物が発生している理由として任意の手がかりを提供することはできますか?
ありがとうございます。
ロテム、あなたの答えに感謝 - 私は、この特定のプロパティを認識していませんでした。私はそれをテストしましたが、それはまだ動作しませんでした。しかし、私はそれを 'HighQuality'に設定すると、イメージが正しくレンダリングされていることがわかりました。私にとって愚かなデフォルト値のように聞こえるが、あなたが知っていれば修正するのは簡単だ - もう一度感謝! –
私は同じ問題を抱えていました。また、 'PixelOffsetMode'プロパティも認識していませんでした。繰り返しますが、 'PixelOffsetMode.None'は明白な設定であるにもかかわらず私のためには機能しませんでしたが、' PixelOffsetMode.HighQuality'が機能しました。 –