2017-05-11 28 views
1

ボタンをクリックすると、画像ボックス内の画像を別の画像ボックスに移動したいのですが、その逆の場合でも、私のコードは理論上は機能するはずですが、何らかの理由で実行されません。どんな助けでも大歓迎です! は、ここに私のコードです:画像移動ボタンをクリック

int chicken_move = 0; 

    private void button_Chicken_Click(object sender, EventArgs e) 
    { 
     chicken_move++; 
     if (chicken_move > 1) 
     { 
      chicken_move = 0; 
     } 

     switch (chicken_move) 
     { 
      case 0: 

       pictureBox_Micro.Image = pictureBox_Uncooked.Image; 
       pictureBox_Uncooked.Image = null; 

       break; 

      case 1: 

       pictureBox_Uncooked.Image = pictureBox_Micro.Image; 
       pictureBox_Micro.Image = null; 

       break; 
     } 
+0

2つの静的ビットマップなど、最初に変数を使用してください。ビットマップには、nullだけでなく、disposeを使用してください。これはwinformsなので、無効化する必要があります。多分doevents – Trey

答えて

2

画像を変更するには、スワップ技術を使用する必要があります。それ以外の場合は、最初のクリック後に失われます。

public partial class Form1 : Form 
    { 
     private bool isFirstOne; 
     Image forSwap; 
     public Form1() 
     { 
      InitializeComponent(); 

     string path1 = @"C:\Users\...\...\somePic.png"; 

     pictureBox1.Image = Image.FromFile(path1); 

     forSwap = null; 
     isFirstOne = false; 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     switch (isFirstOne) 
     { 
      case true: 
       forSwap = pictureBox2.Image; 
       pictureBox1.Image = pictureBox2.Image; 
       pictureBox2.Image = null; 
       break; 

      case false: 
       forSwap = pictureBox1.Image; 
       pictureBox2.Image = pictureBox1.Image; 
       pictureBox1.Image = null; 
       break; 
     } 
     isFirstOne = !isFirstOne; 
    } 
} 
+0

イメージファイルのパスに関して、私はこれを実行したいのですが、イメージを抽出し、そうでなければ、他のコンピュータ上で実行されるようにパスを設定するにはどうすればよいですか? –

+0

この方法で使用すると、別のコンピュータで画像が見つからないことがあります。リソース(プロパティ内)にイメージを追加してから、パスを必要とせずにどのコンピュータでも動作します – emiraslan

+0

どうすればこの問題を回避できますか? –

1

は、他の画像に1つのPictureBoxの画像を設定しないようにしてください。

画像を実際の画像(ファイルなど)への参照に設定してみてください。

または、pictureBox.ImageLocationを使用して設定してみてください。

+0

私はそれを大きなストレスと呼んでいます。 – Trey

+2

それは私の最初のものでした!どのように改善できますか? [それを提出することを威嚇していた、tbh。] – JUmlauf

+0

通常、答えにはコード例があります。 :-)冗談だけど真面目に、それぞれの提案の例はおそらく将来この問題がある人を助けるでしょう。 – Trey

1

あなたがグローバルとしてchicken_move変数を設定して考慮すると、コードで は何の問題もありません。画像ファイルの場所を指定してみてください:

pictureBox_Micro.ImageLocation = "UncookedImage.jpg"; 

pictureBox_Uncooked.ImageLocation = "MicroImage.jpg"; 
関連する問題