私はStretchImageを使用しています。なぜなら、ボックスはスプリッタでリサイズできるからです。デフォルトは平滑な双線形フィルタリングのようなもので、画像がぼやけてモアレのパターンになっているようです。PictureBoxで最近傍リサンプリングを使用するにはどうすればよいですか?
答えて
役立ちますまた、私は、ピクチャボックスを継承するクラスを作っOnPaint
をオーバーライドし、補間モードを設定することができるようにプロパティを追加します。
/// <summary>
/// Inherits from PictureBox; adds Interpolation Mode Setting
/// </summary>
public class PictureBoxWithInterpolationMode : PictureBox
{
public InterpolationMode InterpolationMode { get; set; }
protected override void OnPaint(PaintEventArgs paintEventArgs)
{
paintEventArgs.Graphics.InterpolationMode = InterpolationMode;
base.OnPaint(paintEventArgs);
}
}
ImageクラスとDrawImage関数を使用して手動でサイズ変更を行い、PictureBoxのresizeイベントに応答する必要があると思われます。
.NETで画像をリサイズ、System.Drawing.Drawing2D.InterpolationModeは、以下のリサイズ方法施設:
- バイキュービック
- バイリニアを
- 高
- HighQualityBicubic
- HighQualityBilinear
- Low
- NearestN eighbor
- デフォルト
私はOPの質問にどのように対処しているのかわかりません。 – JYelton
は、私は、MSDNの検索を行なったし、非常に詳細ではありませんが、あなたがペイントイベントを使用する必要があることを概説し、この上の記事は、ありますが判明しました。
http://msdn.microsoft.com/en-us/library/k0fsyd4e.aspx
が、私はこの機能を使用する例をズーム一般に入手可能な画像を編集した、から編集以下を参照してください。http://www.dotnetcurry.com/ShowArticle.aspx?ID=196&AspxAutoDetectCookieSupport=1
希望この私はこの機能を必要と
private void Form1_Load(object sender, EventArgs e)
{
// set image location
imgOriginal = new Bitmap(Image.FromFile(@"C:\images\TestImage.bmp"));
picBox.Image = imgOriginal;
// set Picture Box Attributes
picBox.SizeMode = PictureBoxSizeMode.StretchImage;
// set Slider Attributes
zoomSlider.Minimum = 1;
zoomSlider.Maximum = 5;
zoomSlider.SmallChange = 1;
zoomSlider.LargeChange = 1;
zoomSlider.UseWaitCursor = false;
SetPictureBoxSize();
// reduce flickering
this.DoubleBuffered = true;
}
// picturebox size changed triggers paint event
private void SetPictureBoxSize()
{
Size s = new Size(Convert.ToInt32(imgOriginal.Width * zoomSlider.Value), Convert.ToInt32(imgOriginal.Height * zoomSlider.Value));
picBox.Size = s;
}
// looks for user trackbar changes
private void trackBar1_Scroll(object sender, EventArgs e)
{
if (zoomSlider.Value > 0)
{
SetPictureBoxSize();
}
}
// redraws image using nearest neighbour resampling
private void picBox_Paint_1(object sender, PaintEventArgs e)
{
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.DrawImage(
imgOriginal,
new Rectangle(0, 0, picBox.Width, picBox.Height),
// destination rectangle
0,
0, // upper-left corner of source rectangle
imgOriginal.Width, // width of source rectangle
imgOriginal.Height, // height of source rectangle
GraphicsUnit.Pixel);
}
picBox_Paint_1メソッドにはどのようなイベントが組み込まれていますか?それはあなたのコードの他の部分にあるでしょう。 –
それはフォームデザイナーコードにあります:this.picBox.Paint + = new System.Windows.Forms.PaintEventHandler(this.picBox_Paint_1); – ardunn
- 1. CFGと任意の数の近傍を解析するにはどうすればよいですか?
- 2. 最近のアプリリストに表示されるスナップショットを変更するにはどうすればよいですか?
- 3. Javascriptで最も近いエンティティを取得するにはどうすればよいですか?
- 4. 最新のSDK APIを使用しないようにするにはどうすればよいですか?
- 5. Androidでアプリの最近の起動時間を確認するにはどうすればよいですか?
- 6. Git:ディレクトリに最も近いコミットを見つけるにはどうすればよいですか?
- 7. アクティブ/最近のユーザーをホームページに表示するにはどうすればよいですか?
- 8. Wordpressサイトの最近のブログエントリをウェブページ内に表示するにはどうすればよいですか?
- 9. Visual Studio 2008の[最近のプロジェクト]リストをクリアするにはどうすればよいですか?
- 10. 最近アップロードした動画を直接表示するにはどうすればよいですか?
- 11. jqueryで最も近いhidden divを選択するにはどうすればいいですか?
- 12. PictureBoxでImageRectangleの寸法を取得するにはどうすればよいですか?
- 13. PictureBoxコントロールでスクロールバーを表示するにはどうすればよいですか?
- 14. 最速の最近傍アルゴリズム
- 15. ウィンドウに送信されるメッセージを傍受するにはどうすればよいですか?
- 16. 最近傍アルゴリズムを使用して画像を分類する際に、一般的にどのような機能が使用されますか?
- 17. 最近使用されているCGIスクリプトは何ですか?
- 18. TkinterでPILを使用するにはどうすればよいですか?
- 19. config.groovyでgrails.serverURLを使用するにはどうすればよいですか?
- 20. jquery:contains()でIDを使用するにはどうすればよいですか?
- 21. ウェブビューでアンドロイドトランジションエフェクトを使用するにはどうすればよいですか?
- 22. ブラウザでbackgroundworkerを使用するにはどうすればよいですか?
- 23. Javaでコマンドラインフォントを使用するにはどうすればよいですか?
- 24. スレッドでtrueを使用するにはどうすればよいですか?
- 25. iOSでMQTTを使用するにはどうすればよいですか?
- 26. Javaでスレッドを使用するにはどうすればよいですか?
- 27. コントローラクラスでサービスクラスを使用するにはどうすればよいですか?
- 28. webapp2でACLを使用するにはどうすればよいですか?
- 29. VBAでxlCellTypeLastCellを使用するにはどうすればよいですか?
- 30. イオンラジオエレメントでngModelを使用するにはどうすればよいですか?
ので、これを行うには実際に方法はありませんか?いくつかの簡単な方法で? – Luiscencio
@ルシエンシオ:それはそれがどのように見えるかです。適切なサイズの新しいビットマップとそれからGraphics.DrawImage –
であなた自身で行う必要があります.Jyeltonの答えに印を付ける必要があります。 :) – Pedro77