0

只是不知道该怎么做:

我们有一张图片,我们知道这张图片中的常量WIDTHHEIGHT一张卡片。我想在这张图片中显示一张图片。下一个常数是我们有多少张牌,所以CNT_CARDS = 52。我不想创建每张卡片 - 只显示。我正在使用 winforms (C#)。

伪代码

加载图像。

每张卡可以申请:

int offsetTop = row * HEIGHT;
int offsetLeft = column * WIDTH;
imageInImage.Location = new Point(offsetLeft, offsetTop);
imageInImage.Size = new Size(WIDTH, HEIGHT);

例如,如果我们想获得钻石皇后:

int offsetTop = 2 * HEIGHT;
int offsetLeft = 11 * WIDTH;

扑克形象

4

3 回答 3

5

使用 Graphics.DrawImage() 为单张卡片创建位图。样板示例实现可能如下所示:

    static Bitmap GetCardImage(Bitmap cards, int cardnum) {
        int width = cards.Width / 13;
        int height = cards.Height / 4;
        int left = width * (cardnum % 13);
        int top = height * (cardnum % 4);
        var bmp = new Bitmap(width, height,
            System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
        using (var gr = Graphics.FromImage(bmp)) {
            gr.DrawImage(cards,
                new Rectangle(0, 0, width, height),
                new Rectangle(left, top, width, height),
                GraphicsUnit.Pixel);
        }
        return bmp;
    }

您可以通过创建位图数组来进一步扩展它,以便在需要绘制它们时随时可用。你会在启动画面上做的事情。假设您将带有卡片面孔的图像添加为名为 CardFaces 的资源:

    static Bitmap[] CreateDeckImages() {
        var deck = new Bitmap[52];
        using (var images = Properties.Resources.CardFaces) {
            for (int cardnum = 0; cardnum < deck.Length; ++cardnum) {
                deck[cardnum] = GetCardImage(images, cardnum);
            }
        }
        return deck;
    }

未经测试,应该接近。

于 2013-06-23T14:29:23.663 回答
1

这应该是一个好的开始

        var bmp = new Bitmap(225, 315);
        var OriBmp = new Bitmap(@"c:\gnv4Q.jpg");
        var g = Graphics.FromImage(bmp);

        g.DrawImage(OriBmp,0,0,new Rectangle(225,315,225,315),GraphicsUnit.Pixel);

        bmp.Save(@"c:\test.png");
于 2013-06-23T14:30:09.987 回答
0

另一种方法是将图像拆分为一组图像,每张卡片一个图像。

ImageSplitter,是一个网站,目前有一个在线图像分割工具,可以用来有效地将OP的图像分割成一组图像,每张卡片一个图像。

需要注意的是,由于 OP 的图像是 2925 x 1260 像素,并且卡片在图像中跨越 4 行 x 13 列,因此结果将是一组 225 x 315 像素大小的卡片图像,通过使用在线图像分割工具正在讨论中。

在讨论中的在线图像分割工具网站上,您目前会在主页上找到上传图像的选项。您可以:
1. 点击“点击此处上传您的图片”
2. 点击“上传图片”
3. 上传图片后,在下一个屏幕上,选择“分割图片”工具
4. 然后输入当前在工具上找到的行数和列数
- 对于此图像,为行输入“4”,为列输入“13”
5. 接下来,单击工具上当前找到的“分割图像”

按照上面的步骤1到5,一组图片,一张图片,包含在一个zip文件中,将被下载到用于讨论在线图片分割工具的浏览器的下载文件夹中。

链接到在线图像分割工具的视觉指南

于 2016-05-13T21:53:36.527 回答