Winform图片框删除,以显示文本

时间:2017-07-14 06:35:50

标签: c# winforms

我正在制作扑克游戏,玩家与电脑,并揭示胜利者(规则中非常简单)我决定使用Winform,我使用了按钮。我用一个按钮来显示卡片的文字(卡片作为图像似乎超出了我的学习范围,因为我有两个星期的时间来完成它)我希望将卡片背面作为图片框,并且当你点击抽奖卡时,图片框会消失以显示文本卡。

我问我的导师和我想要的方式,他并不确定。我已经尝试=null摆脱它,(Buttonname)Image = Image.FromFile() ...我无法在线找到任何帮助。

对于这种困惑感到抱歉,我匆匆忙忙,可能措辞不好。基本上我正在制作五张牌扑克游戏。我使用禁用按钮作为卡。我正在使用一个标题为"背面的卡片"显然它作为卡的背面。当您点击" Draw cards"我希望图片框消失或隐藏,以显示按钮中图片框下面的文本。 (卡的正面将是现在的文字:IE:"俱乐部的杰克"而不是俱乐部杰克的照片)

到目前为止,我没有太多代码可以显示我的内容,因为它让我陷入了循环。我现在有占位符文本,只是为了测试它。这就是我现在拥有的东西。

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

就像我说的那样,它只是一个占位符,直到我完成其余的代码,但我希望图片,当点击时,隐藏并显示"女王的心和#34;它下面的文字。

2 个答案:

答案 0 :(得分:0)

根据您所编写的内容,您似乎只是使用按钮(不是PictureBox)并使用文本和图像属性。按钮并没有真正配置为隐藏/显示这样的单个属性。在我的系统上,如果我设置(按钮).FlatStyle = FlatStyle.System;它摆脱了图像,但不确定这对所有系统是否相同。

一种更好的方法是使用2个重叠的控件然后你可以使用(picturebox).Hide();显示下面的标签/文本框或其他图片框。

对于每张卡'使用您设置为所需卡大小的Panel控件创建占位符。在你的同时,将BorderStyle设置为除None之外的其他东西。 在Panel内部创建Label控件,将Dock设置为Fill,将TextAlign设置为MiddleCenter,并将Text属性更改为卡名称(' Queen Of Spades')。 现在在Panel中创建一个PictureBox控件,并将它设置为Dock to Fill,Image设置为卡片的背景图像,将SizeMode设置为StretchImage或Zoom。 现在你将拥有一张完全覆盖隐藏卡片的卡片背景,你可以使用(面板)显示。隐藏();

当然,您可以将Label替换为另一个PictureBox,以显示卡片的图片。 如果你想使用标签,在你的小键盘上尝试使用ALT-3表示♥,ALT-4♦,ALT-5♣和ALT-6♠表示某些卡符号;)

答案 1 :(得分: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
    }
}

看看这是否有帮助。它只是开发的开始,可以通过添加其他属性和方法进一步扩展。

相关问题