[C#] C #에서 프로젝트의 리소스 영역에서 이미지로드

프로젝트에 Resources / myimage.jpg에 저장된 이미지가 있습니다. 이 이미지를 비트 맵 객체에 동적으로로드하려면 어떻게해야합니까?



답변

Windows Forms를 사용하고 있습니까? 속성 / 리소스 UI를 사용하여 이미지를 추가 한 경우 생성 된 코드에서 이미지에 액세스 할 수 있으므로 간단하게 수행 할 수 있습니다.

var bmp = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);


답변

다음과 같은 방법으로 이미지에 대한 참조를 얻을 수 있습니다.

Image myImage = Resources.myImage;

당신이 확인하려면 사본 이미지를, 당신은 다음을 수행해야합니다 :

Bitmap bmp = new Bitmap(Resources.myImage);

완료되면 bmp 를 폐기하는 것을 잊지 마십시오 . 컴파일 타임에 리소스 이미지의 이름을 모르는 경우 리소스 관리자를 사용할 수 있습니다.

ResourceManager rm = Resources.ResourceManager;
Bitmap myImage = (Bitmap)rm.GetObject("myImage");

ResourceManager의 장점은 Resources.myImage가 일반적으로 범위를 벗어나거나 자원에 동적으로 액세스하려는 경우 사용할 수 있다는 것입니다. 또한 이것은 사운드, 구성 파일 등에서 작동합니다.


답변

리소스 스트림에서로드해야합니다.

Bitmap bmp = new Bitmap(
  System.Reflection.Assembly.GetEntryAssembly().
    GetManifestResourceStream("MyProject.Resources.myimage.png"));

어셈블리의 모든 리소스 이름을 알고 싶다면 다음을 수행하십시오.

string[] all = System.Reflection.Assembly.GetEntryAssembly().
  GetManifestResourceNames();

foreach (string one in all) {
    MessageBox.Show(one);
}


답변

제안 된 모든 답변보다 훨씬 쉬운 방법

tslMode.Image = global::ProjectName.Properties.Resources.ImageName;


답변

여러 프로젝트에서 사용하는 코드 … 아이콘이 아닌 비트 맵으로 만 리소스에 이미지를 저장한다고 가정합니다.

    public static Bitmap GetImageByName(string imageName)
    {
        System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
        string resourceName = asm.GetName().Name + ".Properties.Resources";
        var rm = new System.Resources.ResourceManager(resourceName, asm);
        return (Bitmap)rm.GetObject(imageName);

    }


답변

가장 좋은 방법은 프로젝트의 리소스 설정에서 이미지 리소스로 추가하는 것입니다. 그런 다음 Resources.myimage를 수행하여 이미지를 직접 가져올 수 있습니다. 생성 된 C # 속성을 통해 이미지를 가져옵니다.

이미지를 Embedded Resource로 설정하면 다음과 같이 얻을 수 있습니다.

string name = "Resources.myimage.jpg"
string namespaceName = "MyCompany.MyNamespace";
string resource = namespaceName + "." + name;
Type type = typeof(MyCompany.MyNamespace.MyTypeFromSameAssemblyAsResource);
Bitmap image = new Bitmap(type.Assembly.GetManifestResourceStream(resource));

여기서 MyTypeFromSameAssemblyAsResource는 어셈블리에있는 모든 유형입니다.


답변

아래 하나를 사용하십시오. Windows 폼의 그리드 뷰 셀로 이것을 테스트했습니다.

Object rm = Properties.Resources.ResourceManager.GetObject("Resource_Image");
Bitmap myImage = (Bitmap)rm;
Image image = myImage;

“Resource_Image”의 이름은 프로젝트에서 찾을 수 있습니다.

프로젝트 이름 아래에서을 찾을 수 Properties있습니다. 확장하십시오. 거기에서 Resources.resx파일 을 볼 수 있습니다. 열어 봐. 파일 이름을 “Resource_Image”로 적용하십시오.