我正在制作扑克游戏,玩家与电脑,并揭示胜利者(规则中非常简单)我决定使用Winform,我使用了按钮。我用一个按钮来显示卡片的文字(卡片作为图像似乎超出了我的学习范围,因为我有两个星期的时间来完成它)我希望将卡片背面作为图片框,并且当你点击抽奖卡时,图片框会消失以显示文本卡。
我问我的导师和我想要的方式,他并不确定。我已经尝试=null
摆脱它,(Buttonname)Image = Image.FromFile()
...我无法在线找到任何帮助。
对于这种困惑感到抱歉,我匆匆忙忙,可能措辞不好。基本上我正在制作五张牌扑克游戏。我使用禁用按钮作为卡。我正在使用一个标题为"背面的卡片"显然它作为卡的背面。当您点击" Draw cards"我希望图片框消失或隐藏,以显示按钮中图片框下面的文本。 (卡的正面将是现在的文字:IE:"俱乐部的杰克"而不是俱乐部杰克的照片)
到目前为止,我没有太多代码可以显示我的内容,因为它让我陷入了循环。我现在有占位符文本,只是为了测试它。这就是我现在拥有的东西。
A1(buttonname).Image = ImageFromFile();
A1.Text = "Queen of Hearts";
就像我说的那样,它只是一个占位符,直到我完成其余的代码,但我希望图片,当点击时,隐藏并显示"女王的心和#34;它下面的文字。
答案 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
}
}
看看这是否有帮助。它只是开发的开始,可以通过添加其他属性和方法进一步扩展。