项目资源

时间:2019-05-19 08:48:23

标签: c++ winforms clr

我需要在文件中更改PictureBox的图像。我通过编写以下代码来做到这一点:

mass[oldcord.first - 1, oldcord.second + 1]->Image = Image::FromFile("EMPTY.png");

但是,如果我不在文件夹中运行项目,则会收到错误消息,因为无法找到图像,因为我不是从项目文件夹中执行图像。我如何不能从表单中使用“资源”,而是从其他文件中使用“资源”?

this->MainField->Image = (cli::safe_cast<System::Drawing::Image^>(resources->GetObject(L"Field")));

我希望我的应用程序可以在任何地方执行,而不仅仅是在我的项目文件夹中执行。

我试图通过构造函数传递表单资源,但是失败了

添加:

#pragma once
#include "MainForm.h"
#include <string>
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

enum TYPE { EMPTY, BLACK, WHITE };

ref class Figure
{
public:
    Figure()
    {
        color = EMPTY;
        active = 0;
        king = 0;
    }

    Figure(int x, int y, TYPE color)
    {
        this->color = color;
        this->color = color;
        active = 0;
        king = 0;
    }

    void MoveTo(pair<int,int> newcord, System::Windows::Forms::PictureBox^ current, TYPE turn) // ставит на место, меняет статус, цвет
    {
        current->Location = System::Drawing::Point(37 + newcord.second * 90, 37 + newcord.first * 90);
        if (color == EMPTY)
            color = turn;
        else
            color = EMPTY;
    }

    void make_king(System::Windows::Forms::PictureBox^% current, int i)
    {
        if (i == 0 && color == WHITE)
        {
            current->Image = Image::FromFile("WhiteKing.png");
            king = true;
        }
        else if (i == 7 && color == BLACK)
        {
            current->Image = Image::FromFile("BlackKing.png");
            king = true;
        }
    }

    bool is_active()
    {
        return active;
    }

    void make_active(bool active)
    {
        this->active = active;
    }

    TYPE getColor()
    {
        return color;
    }

    void setColor(TYPE color)
    {
        this->color = color;
    }

    bool is_king()
    {
        return king;
    }

private:
    Graphics^ picture;
    TYPE color;
    bool active;
    bool king;
};

1 个答案:

答案 0 :(得分:0)

您可以尝试为此使用{:https://www.boost.org/doc/libs/1_70_0/doc/html/program_options.html)boost :: program_options

例如,您的程序可以具有Config类,其中包含可在运行时更改的配置选项(例如带有资源的路径或您需要的任何内容)。