我需要在文件中更改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;
};
答案 0 :(得分:0)
您可以尝试为此使用{:https://www.boost.org/doc/libs/1_70_0/doc/html/program_options.html)boost :: program_options
例如,您的程序可以具有Config类,其中包含可在运行时更改的配置选项(例如带有资源的路径或您需要的任何内容)。