2017-07-14 5 views
-1

私はポーカーゲームを作っています。プレーヤーとコンピュータを比較し、優勝者を明らかにする(ルールでは非常に簡単です)私はWinformを使用することに決めました。私はカードのテキストを表示するために1つのボタンを使用しました。(カードは画像を完成させるために2週間があるので、学習する範囲の外にあるようです。)そしてカード画像の裏面を画像ボックスとして持っていきたいです。ドローカードをヒットすると、絵文字ボックスが消えてテキストカードが表示されます。Winformピクチャボックスを削除してテキストを表示する

私はインストラクターに尋ねましたが、私はそれをしたいと思っていました。私はそれを取り除くために=nullを試しました、そして(Buttonname)Image = Image.FromFile() ...私は本当に助けるために何かをオンラインで見つけることができません。

混乱して申し訳ありませんが、私は時間とともに急いでいて、おそらくそれをよく言いませんでした。基本的に私は5カードのポーカーゲームを作っています。私は無効なボタンをカードとして使用しています。私は明らかにカードの後ろにそれを持っている "カードのバック"というタイトルの画像ボックスを使用しています。 「カードを描く」をクリックすると、ピクチャボックスの下にあるテキストをボタンに表示するために、ピクチャボックスを消したり隠したりします。 (カードの正面は、今のところテキストベースになっています:IEの:クラブのジャックの代わりに "クラブのジャック")

私は何を持っているかを示すためのコードはあまりありませんそれはループのために私を投げているからです。プレースホルダのテキストがそこにあります。テストするだけです。ここで私は今のところそれを持っています。私は私のコードの残りの部分を終了するまで、私が言ったように

A1(buttonname).Image = ImageFromFile(); A1.Text = "Queen of Hearts";

が、それだけでプレースホルダですが、私はイメージは、クリックされたとき、「ハートの女王」を隠し、表示しないテキストそれはその下にあります。

+1

私は、実際の質問が表示されません! –

+1

問題のある場所にコードを追加してください。 –

+1

はたぶん、あなたは 'PictureBox.Visible'が必要ですか? – DrNachtschatten

答えて

0

あなたが書いたことからは、ボタン(PictureBoxではなく)を使用していて、テキストと画像のプロパティを使用しているように見えます。ボタンは本当にそのような個々のプロパティを隠す/表示するようには構成されていません。私のシステムでは、私は(ボタン)を設定する.FlatStyle = FlatStyle.System;イメージを削除しますが、これがすべてのシステムで同じになるかどうかはわかりません。

2つのコントロールを重複して使用すると、(picturebox).Hide();ラベル/テキストボックスまたはその下の別の絵文字を表示します。

「カード」ごとに、目的のカードサイズに設定したPanelコントロールを使用してプレースホルダを作成します。その間、BorderStyleにNone以外の値を設定します。 パネル内にLabelコントロールを作成し、DockをFill、TextAlignをMiddleCenterに設定し、Textプロパティをカード名( 'Queen Of Spades')に変更します。 Panel内にPictureBoxコントロールを作成し、塗りつぶしにDock、カードの背景イメージにImage、StretchImageまたはZoomにSizeModeを設定します。 (Panel).Hide();を使用して公開できる隠しカードを完全にカバーするカードの背景を持つようになりました。

もちろん、ラベルを別のPictureBoxに置き換えて、代わりにカードの画像を表示することができます。 ラベルを使用する場合は、数字を入力して、♥、ALT-4♦、ALT-5♣、ALT-6♠にALT-3を使用してみてください)

0

あなたの説明が正しいと理解していれば、カスタムコントロールを作成することをお勧めします。この例を見てください

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace WindowsFormsApplication2 
{ 
    public partial class Card : Control 
    { 
     // To draw a text at center. 
     StringFormat stringFormat; 

     public Card() 
     { 
      this.stringFormat = new StringFormat(); 
      this.stringFormat.Alignment = StringAlignment.Center; 
      this.stringFormat.LineAlignment = StringAlignment.Center; 
      this.BackColor = SystemColors.ControlLight; 
     } 

     protected override void OnClick(EventArgs e) 
     { 
      this.cardSide = this.cardSide == CardSide.Back ? CardSide.Front : CardSide.Back; 
      Invalidate(); 
     } 

     Image backSideImage; 

     public Image BackSideImage 
     { 
      get 
      { 
       return this.backSideImage; 
      } 
      set 
      { 
       this.backSideImage = value; 
      } 
     } 

     CardSide cardSide; 

     public CardSide CardSide 
     { 
      get 
      { 
       return this.cardSide; 
      } 
      set 
      { 
       this.cardSide = value; 
      } 
     } 

     protected override void OnPaint(PaintEventArgs pe) 
     { 
      switch (this.cardSide) 
      { 
       case CardSide.Back: 
        pe.Graphics.DrawImage(this.backSideImage, 0, 0); 
        break; 
       case CardSide.Front: 
        pe.Graphics.DrawString("Queen of Hearts", this.Font, Brushes.Black, ClientRectangle, this.stringFormat); 
        break; 
      } 
     } 

    } 

    public enum CardSide 
    { 
     Front, 
     Back 
    } 
} 

これが役立つかどうかをご覧ください。これは単なる開発の始まりであり、さらにプロパティやメソッドを追加することでさらに拡張できます。

関連する問題