質問

私は、画像ボックスの写真にズームインしてズームインし、ズームアウトするトラックバーを作ろうとしています。これは私の現在のコードです:

namespace Zoom_in_and_Out_Tool
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Image imgOriginal;

        private void Form1_Load(object sender, EventArgs e)
        {
            // set image location
        imgOriginal = Image.FromFile(@"C:\New Folder\picture1.jpg");
        picBox.Image = imgOriginal;

        // set Picture Box Attributes
        picBox.BackgroundImageLayout = ImageLayout.Stretch;

        // set Slider Attributes
        zoomSlider.Minimum = 1;
        zoomSlider.Maximum = 5;
        zoomSlider.SmallChange = 1;
        zoomSlider.LargeChange = 1;
        zoomSlider.UseWaitCursor = false;

        // reduce flickering
        this.DoubleBuffered = true;
        }

        public Image PictureBoxZoom(Image img, Size size)
        {
        Bitmap bm = new Bitmap(img, Convert.ToInt32(img.Width * size.Width), Convert.ToInt32(img.Height * size.Height));
        Graphics grap = Graphics.FromImage(bm);
        grap.InterpolationMode = InterpolationMode.HighQualityBicubic;
        return bm;
        }

        private void zoomSlider_Scroll(object sender, EventArgs e)
        {
        if (zoomSlider.Value > 0)
            {
            picBox.Image = null;
            picBox.Image = PictureBoxZoom(imgOriginal, new Size(zoomSlider.Value, zoomSlider.Value));
            }
        }
    }
}

現在、2つの問題が発生しています。 1つは、Line Grap.interpolationMode = interpolationMode.highqualityBicubicでコンパイルしたいということです。 。 2番目の問題は、ズームをズームしようとすると、エラーが発生することです。「argumentExceptionは、bitmap bm = new bitmap(img、convert.toint32(img.width * size.width)、変換)でエラーが発生しました。 .toint32(img.height * size.height)); "どんな助けも素晴らしいでしょう、

ありがとう

アップデート最初のエラーには、「名前「InterpolationMode」は現在のコンテキストには存在しません」というこの行にコメントするときの2番目のエラーは、「nullReferenceExceptionは「オブジェクトの参照」ではなく、オブジェクトのインスタンスに設定されていません。」ラインbitmap bm = new bitmap(img、convert.toint32(img.width * size.width)、convert.toint32(img.height * size.height));

ありがとう

役に立ちましたか?

解決

含む

using System.Drawing.Drawing2D;

使用リストで。

2番目のエラーは、いずれかのためです img ヌルまたは size ヌルであること。

他のヒント

最初 コンパイラエラーは、以下の未知の参照によって引き起こされる可能性が高い InterpolationMode.HighQualityBicubic. 。 InterpolationMode 列挙はにあります Drawing2D 名前空間、子供の名前空間です System.Drawing.

追加を追加することにより、このエラーを修正できます Using の指令 System.Drawing.Drawing2D, 、またはコード内の名前空間を完全に適格にすることによって:

grap.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic;


2番目 コードの問題は、このメソッドのパラメーターとして指定している画像です(このメソッド)img)null参照です。 Scroll ズームスライダーのイベントは、コントロールが作成されるとすぐに(フォームのコンストラクターで)上昇します。これは、フォームのコードの前です Load メソッドが実行されます。これは、画像を作成するものです(ディスク上のファイルからロードすることで)。

にnullチェックを追加してみてください Scroll イベントハンドラー:

    private void zoomSlider_Scroll(object sender, EventArgs e)
    {
    if ((zoomSlider.Value > 0) && (imgOriginal != null))
        {
        picBox.Image = null;
        picBox.Image = PictureBoxZoom(imgOriginal, new Size(zoomSlider.Value, zoomSlider.Value));
        }
    }


ついに, 、私はあなたが設定していることに気づきました BackgroundImageLayout 写真ボックスのプロパティですが、投稿するコードはどれも、実際には、画像ボックスの背景画像を指定していません。設定するつもりでしたか SizeMode 財産 画像の表示方法を調整するには?何かのようなもの:

picBox.SizeMode = PictureBoxSizeMode.StretchImage;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top