小编Dmi*_*pov的帖子

如何正确使用Switch-Case减少线路

我正在做一个二十一点游戏项目.我有一种helper()方法可以帮助用户完成他们的行为.例如:

经销商的上牌是:8 玩家手牌总数是:16

球员不确定,他应该击中还是留下.helper()功能在这里采取行动.

它基本上计算了甲板上好卡的数量(playerTotal+ goodcard<= 21)

所以我正在考虑以这种方式做到这一点(伪代码)

public void helper() {

    remain = 21 - playerTotal;

    if (remain == 1) {
        for (int i = 0; i < deck.last(); i++) {
            switch (deck[i]) {
                case A: numOfGood += 1
                default: numOfBad +=1
            }
        }
    }
    else if (remain == 2) {
        for (....) {
            switch (deck[i]) {
                case A: numOfGood += 1
                case 2: numOfGood += 1
                default: numOfBad +=1 …
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
86
查看次数

DoubleBuffered设置为true时覆盖OnPaint的问题

我创建了一个派生自Panel的自定义控件.我用它来使用BackgroundImage属性显示一个Image.我重写OnClick方法并将isSelected设置为true然后调用Invalidate方法并在覆盖的OnPaint中绘制一个矩形.一切都很顺利,直到我将DoubleBuffered设置为true.绘制矩形然后将其删除,我无法理解为什么会发生这种情况.

public CustomControl()
    : base()
{
    base.DoubleBuffered = true;

    base.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
}

protected override void OnPaint(PaintEventArgs pe)
{
    base.OnPaint(pe);

    PaintSelection();
}

private void PaintSelection()
{
    if (isSelected)
    {
        Graphics graphics = CreateGraphics();
        graphics.DrawRectangle(SelectionPen, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# doublebuffered onpaint winforms

1
推荐指数
1
解决办法
1407
查看次数

标签 统计

c# ×2

doublebuffered ×1

onpaint ×1

winforms ×1