我正在为 OOP 简介论文编写纸牌游戏。游戏本身符合规范,但我现在玩它是为了自己的满足和学习。
我有一个卡片类,其中包含图像、其等级和套件。在 GUI 上,我使用图片框来显示存储在各个卡片中的图像(这些图像存储在牌组类的卡片数组中),
cardPictureBox1.Image = card1.show();
cardPictureBox2.Image = card2.show();
cardPictureBox3.Image = card3.show();
...
etc
是否可以使卡片类继承 PictureBox 控件,以便屏幕上的内容“实际上”是卡片类的实例(而不是保存其图像值的框),这将大大减少人们必须跳过多少圈才能获得卡片的其他相关信息。
最佳答案
您可以创建一个继承自 PictureBox(而不是继承自 UserControl)的 UserControl(名为 Card 或 ucCard 或其他名称),而不是使用 Card 类。在 C# 中执行此操作的最简单方法是添加具有所需名称的 UserControl,然后在代码中更改顶行
public partial class ucCard : UserControl
至
public partial class ucCard : PictureBox
您的 ucCard 控件将具有 PictureBox 的所有属性(包括图像,您将在其中存储卡的位图)。当您构建项目时,编译器将在引用 AutoScaleMode 的行上抛出 - 只需删除此行并重新构建即可。
然后,您可以添加卡片所需的任何其他属性和方法,例如卡片正面和背面的花色和等级以及位图(背面可以是静态的,以便所有卡片都共享它),也许还可以添加 Flip( ) 方法来切换前后图像。
就 OOP 而言,神圣三位一体中被遗忘的部分似乎是封装。在这种情况下,由于卡片是 UI 中与用户交互的视觉元素,因此将其封装为 UserControl 是非常有意义的。正如您已经注意到的,这将使应用程序更简单,您的生活也更轻松。
关于时间:2019-03-17 标签:c#pictureboxinheritanceforcardgame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436381/