런타임에 리소스 액세스
런타임에 리소스에 액세스하려면 다른 클래스 멤버의 경우와 마찬가지로 해당 리소스를 참조하기만 하면 됩니다. 다음 예제에서는 Image01이라는 비트맵 리소스를 검색하는 방법을 보여 줍니다. Resources 클래스는 <projectName>.Properties라는 네임스페이스에 있으므로 각 리소스에 대해 정규화된 이름을 사용하거나 Resources 클래스에 액세스할 소스 파일에 적절한 using 지시문을 추가해야 합니다.
System.Drawing.Bitmap bitmap1 = myProject.Properties.Resources.Image01;
내부적으로 get 속성은 ResourceManager 클래스를 사용하여 이 개체의 새 인스턴스를 만듭니다.
리소스 검색
System.Reflection.Assembly thisExe; thisExe = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream file = thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg"); this.pictureBox1.Image = Image.FromStream(file);
ResourceManager
현재 문화권에 대해 지정된 오브젝트 리소스의 값을 가져옵니다.
internal static System.Drawing.Bitmap Cancel { get { object obj = ResourceManager.GetObject("Cancel", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } }
.resx 리소스 파일 형식은
XML 태그 내에 개체와 문자열을 지정하는 XML 엔트리로 구성됩니다. 메모장이나 Microsoft Word 같은 텍스트 편집기에서 .resx 파일을 열면 파일에 대한 쓰기, 구문 분석 및 조작이 가능합니다. .resx 파일을 볼 때 이 이진 정보가 리소스 매니페스트의 일부인 경우에는 포함된 개체(예: 그림)의 이진 형식을 실제로 볼 수 있습니다. 이 이진 정보와는 별도로 .resx 파일을 완벽하게 읽고 유지 관리할 수 있습니다.
헤더 정보 다음에는 .txt 파일에서 문자열을 지정하는 것과 매우 유사한 이름/값 쌍 방식으로 각 엔트리를 기술합니다. .resx 형식의 이름/값 쌍은 XML 코드에 래핑되어 문자열 또는 개체 값을 기술합니다. .resx 파일에 문자열이 추가되면 다음 예제와 같이 문자열 이름은 <data> 태그에 포함하고 값은 <value> 태그로 묶습니다
<data name="string1">
<value>hello</value>
</data>
다음 예제에서는 .resx 파일에 저장된 Int32 개체와 실제 .gif 파일의 이진 정보를 보유하는 비트맵 개체의 시작 부분을 보여 줍니다.
<data name="i1" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="flag" type="System.Drawing.Bitmap, System.Drawing,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAADtTeX…
</value>
</data>
ResXResourceWriter 클래스 사용 리소스 저장하기
using System; using System.Drawing; using System.Resources; public class SampleClass { public static void Main() { Image img = Image.FromFile("en-AU.jpg"); ResXResourceWriter rsxw = new ResXResourceWriter("en-AU.resx"); rsxw.AddResource("en-AU.jpg",img); rsxw.Close(); } }
'C#.NET' 카테고리의 다른 글
[MSDN]DataGridView 셀에서 컨트롤 호스팅 (0) | 2010.03.03 |
---|---|
[Interface]인터페이스가 구현되어져 있는지 확인해보기 (0) | 2010.03.03 |
[ErrorProvider]폼 유효성에 대한 오류 아이콘 표시 (0) | 2010.03.03 |
초간단 숫자 앞에 0 채우기 (0) | 2010.02.25 |
초간단 DataGridView 사용법 (추가중…) (0) | 2010.02.22 |
[Process]외부프로그램 실행 / 익스플로어실행 (0) | 2010.02.08 |
초간단 Custom Controls 만들기 (0) | 2010.02.05 |
초간단한 Login Form 만들기 (0) | 2010.02.04 |
[Form Loading]폼로딩 보여주기 (0) | 2010.02.03 |
virtual 메소드 (0) | 2010.01.27 |